C# Trim()和replace()的区别

18

在 C# 中,如果我们想要将字符串中的 " " 替换为 string.empty,使用 stringValue.Trim()stringValue.replace(" ", string.empty) 是否可以?两种方法都能达到同样的目的。但哪一种更好呢?


Trim() 方法从当前的字符串对象中移除所有前导和尾随的空白字符。详见 http://msdn.microsoft.com/zh-cn/library/system.string.trim.aspx。 - bzlm
1
即使您不费心查找文档,它已经在您的Intellisense中了。它们是非常不同的。 - gitsitgo
2
似乎除了Said之外,每个人都忽略了你可以使用Trim(char[] trimChars),而Replace(" ","")基本上是一个伪装的Trim - Noctis
8个回答

43

Trim()Replace()的用途不同。

Trim()从字符串的开头和结尾删除所有空白字符。这意味着空格制表符换行符回车和其他各种空白字符都会被删除。

Replace()仅将指定的字符替换为给定的替换字符。因此,Replace(" ", string.empty)只会用空字符串替换空格。Replace()还会替换字符串中所有出现过的指定字符串为给定的替换字符,而不仅仅是在字符串的开头和结尾处。


4
Trim()方法可以同时移除非空白字符。该方法还有一种重载形式,可以使用字符数组来指定要移除的字符。 - bugged87

16

String.Replace 函数将删除所有(且仅仅是)空格字符,而 String.Trim 函数将从字符串的开头和结尾删除所有空白字符,但不会删除中间的空白字符。

var tmp = "  hello world  \t";
var res1 = tmp.Trim(); // "hello world"
var res2 = tmp.Replace(" ", String.Empty); // "helloworld\t"

2

Trim可以从字符串的开头和/或结尾消除空格和非空格字符。Replace可以从字符串中任何位置删除子字符串。

示例:

Console.WriteLine("{{Hello World!:)".Trim('{',':',')'));  //output: Hello World
Console.WriteLine("{{Hello%World!:)".Trim('{', '%', ':',')'));  //output: Hello%World

Console.WriteLine("{{Hello World!:)".Replace("{{", string.Empty)
                                    .Replace(":)",string.Empty));  //output: Hello World

Console.WriteLine("{{Hello%World!:)".Replace("{{", string.Empty)
                                    .Replace("%", string.Empty)
                                    .Replace(":)",string.Empty));  //output: Hello World

简而言之:如果你想要删除字符串开头或/和结尾的单个字符,使用Trim();否则调用Replace()


1
char [] chartrim={'*'};
string name=Console.ReadLine(); //input be *** abcd **
string result= name.Trim(chartrim);
Console.WriteLine(result);

在这种情况下,输出将是abcd。Trim仅会从字符串开头和结尾删除空格或您想要删除的符号。
但是,在string.Replace()中,它将替换您想要替换的字符串,例如。
string name=Console.ReadLine(); //input be mahtab alam
string str2="khan";
string result= name.Replace("alam",str2);
Console.WriteLine(result);

在这种情况下,输出将是mahtab khan
如果您想去掉字符串之间的空格(在这种情况下输出将为mahtabalam)
string name=Console.ReadLine(); //input be mahtab alam
string result= name.Replace(" ",string.Empty);
Console.WriteLine(result)

0

String.Trim() 只会删除前导和尾随空格。因此,您需要使用 String.Replace() 来实现您的目的。


0

Trim函数可以消除字符串前后的空格,而Replace函数则是用来改变字符串数据的。它可以将一个子字符串中的所有出现替换为另一个子字符串,同时还可以处理字符替换。


0

Replace会在字符串的任何位置进行替换。Trim只会从字符串的开头和结尾修剪空格.....所以它们实际上做的是不同的事情。


0
正如Nick Zimmerman所说,Trim()函数可以从字符串的开头和结尾删除所有空格字符。但是您也可以以不同的方式使用它:
Trim(char[] trimChars)函数可以删除在作为参数传递的数组中指定的一组字符的所有前导和尾随出现。 请查看MSDN

2
我非常清楚Trim()的重载。但这并不意味着Trim()和Replace()是等价的。它们的作用不同。 - Nick Zimmerman

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