C#如何去除空白字符和其他字符

3
我希望您能够使用一次 Trim 调用来去除前导空格和单引号,而不是调用两次如下所示。
string s = "    'hello'";
var newString = s.Trim().Trim('\'');

我不想使用

var newString = s.TrimStart().Trim(''\'). 

要么是它被拆分成两个调用。


“leading whitespace” 意思是您要使用 TrimStart - Tim Schmelter
这个问题没有任何问题。+1 来弥补负评。 - Cyberherbalist
很好,但我没有看到有关重复的关闭投票或评论。我认为这个问题很有价值,因为在所有这些年编写C#代码时,我从未遇到过Trim()需要参数——我想是因为从未需要过吧。 - Cyberherbalist
1个回答

10

使用接受多个字符的 Trim 重载:

string s = "    'hello'";
var newString = s.Trim(' ', '\'');
虽然有几个需要注意的地方:
  • 你的问题只提到了前导空格,但是 `Trim` 也会删除尾随字符。如果你只想删除前导字符,请使用 `TrimStart`。
  • 这个解决方案只会删除所有的空格,而不是所有的空白字符。技术上来说,你需要添加所有被认为是“空白字符”的字符。如果你需要修剪的不仅仅是空格,则调用两次 `Trim` 将更加干净。
  • 此解决方案还将在引号中修整空白:

string s = "  '  hello'";
var newString = s.Trim(' ', '\'');   // returns "hello"

实际上这不起作用,因为在我的情况下,前导字符是制表符和其他空格字符。我需要表示与Trim()等效的内容。我想我可以添加所有空格字符吗? - declouet
1
@user2449323 当然可以(根据我回答中的链接,有25个选项卡),或者只需指定选项卡或调用Trim两次(这比指定要修剪的25个字符更清晰)。 - D Stanley
如果你的字符串以“- - - -”或类似的内容开头,那么调用两次Trim也无效。你需要将其放入循环中并检查是否仍然需要删除所有字符的空格。Trim应该允许使用像Regex的“\s”这样的空白转义字符。 - Suamere

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接