【发布时间】:2017-12-30 16:04:30
【问题描述】:
我正在尝试制作一个 Reddit Formatter 工具,用于每当您有一个只有一个换行符的文本来添加另一个并创建一个新段落时。在 StackOverflow 中也是一样的,你必须按两次 Enter 键才能开始一个新段落。它来自:
Roses are red
Violets are Blue
到
Roses are red
Violets are Blue
这很好,但如果它已经是一个双精度字符,我不想添加多个输入字符。我不想离开
Roses are red
Violets are Blue
到
Roses are red
Violets are Blue
因为它已经作为第一个示例工作了。如果你一直按住按钮,它只会无限增加更多的行。
在这个论坛的某个人的帮助下,我已经尝试过了:
for (int i = textBox1.Text.Length - 1; i >= 0; i--)
{
if (textBox1.Text[i] == '\u000A')//if finds a SINGLE new line
{
textBox1.Text = Regex.Replace(textBox1.Text, "(?:\r\n)+", "\r\n\r\n");
}
}
}
而且它可以完美运行...直到您连续输入超过 5 个输入键。然后它因 System.IndexOutOfRangeException 而崩溃。我确定错误来自正则表达式方法,尽管它会在 if 语句开始的行中引发错误
会发生什么?我不明白发生了什么
非常感谢
【问题讨论】:
-
textBox1.Text 每次迭代都会被替换,但索引是基于初始值的。我建议隔离此代码以编写单元测试。然后使用您上面提到的案例创建一个失败的单元测试,以及其他测试。然后简单地修复代码以使测试通过。
-
为什么要删除上一个问题?