假设我们有一个返回字符数组定义的程序 - 这样我们就可以将其复制粘贴到其他C#代码中。可能的结果之一是以下字符串:
现在我们希望消除CharArray末尾的额外空行,同时保留开头或中间的任何空行。
// Current output:
return "CharArray = { {}, {123}, {}, {3 3}, {111}, {}, {}" + "};";
现在我们希望消除CharArray末尾的额外空行,同时保留开头或中间的任何空行。
// Desired output:
"CharArray = { {}, {123}, {}, {3 3}, {111}" + "};";
任何空行都是必要的,以便为间隔原因保留数据,但末尾的空格对我们的代码没有任何作用。
由于最后的括号和分号直到操作完成后才添加,因此似乎最简单的方法是从字符串中删除所有尾随的", {}"实例。 我目前的解决方案是替换和修剪的非常独特的组合...
// Red-Green solution:
return output.Replace(", {}", "!").TrimEnd('!').Replace("!", ", {}") + "};";
尽管这种方法肯定可以返回正确的结果,但它过于冗长,让读者感到困惑,当你第一次阅读时很可能会不舒服。
另外,我通常会使用 Regex.Replace 来解决这类问题,但是这种方法只能删除一个空行(因为字符串末尾只有一个空行),我不想用循环来处理。
// Sub-par solution: (birdie solution?)
return Regex.Replace(testString, ", {}$", "") + "};";
我该如何最好地从字符串的末尾删除所有一系列字符?我希望结果既易读又不会对机器造成太大负担和速度缓慢。(目前用户按下按钮后,返回结果几乎是瞬间的。)