奇怪的行为string.Trim方法

时间:2014-08-18 08:03:05

标签: c# string special-characters trim

我想从字符串中删除所有空格(仅' ''\t',' \ r \ n'应保留)。但我有问题。

实施例: 如果我有

string test = "902322\t\r\n900657\t\r\n10421\t\r\n";
string res = test.Trim(); // res still "902322\t\r\n900657\t\r\n10421\t\r\n" 
res = test.Trim('\t'); // res still "902322\t\r\n900657\t\r\n10421\t\r\n" 

但如果我有

string test = "902322\t";

Trim()完美无缺。为什么会这样?我如何删除'\t'来自使用Trim()方法的字符串?

3 个答案:

答案 0 :(得分:5)

String.Trim方法仅处理字符串

开头和结尾的空格

所以你应该使用String.Replace method

string test = "902322\t\r\n900657\t\r\n10421\t\r\n";
string res = test.Replace("\t", String.Empty); // res is "902322\r\n900657\r\n10421\r\n" 

答案 1 :(得分:0)

Trim()删除边缘字符。您似乎想删除字符串中的任何字符,您可以通过以下方式执行:

test.Replace("\t", null);

当您将null作为替换值传递时,它只会删除旧值。来自MSDN

  

如果newValue为null,则删除所有出现的oldValue。

另请注意,您可以链接调用Replace

test = test.Replace("\t", null).Replace(" ", null);

答案 2 :(得分:0)

修剪仅从字符串的开头和结尾删除空格。因为第一个字符串以\ r \ n结尾,显然不被认为是空格,Trim没有看到要删除的内容。您可以使用“替换”来替换字符串中的空格和制表符。例如: test.Replace(" ", "").Replace("\t", "");