【问题标题】:C# Trim() vs replace()C# 修剪()与替换()
【发布时间】:2013-09-25 00:07:58
【问题描述】:

在 C# string 中,如果我们想将字符串中的 " " 替换为 string.empty,可以使用 stringValue.Trim()stringValue.replace(" ", string.empty)。两者都有相同的目的。但是哪个更好呢?

【问题讨论】:

  • Trim() 从当前 String 对象中删除所有前导和尾随空白字符。 msdn.microsoft.com/en-us/library/system.string.trim.aspx
  • 即使您不费心查找文档,它也已经在您的智能感知中。它们完全不同。
  • 似乎所有人,但 忽略了您可以使用Trim(char[] trimChars) 的事实,而Replace(" ","") 基本上是伪装的Trim

标签: c# string replace trim


【解决方案1】:

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

Trim() 删除字符串开头和结尾的所有空白字符。这意味着spacestabsnew linesreturns 和其他各种空白字符

Replace() 只用给定的替换替换指定的字符。所以Replace(" ", string.empty) 只会用空字符串替换空格。 Replace() 还将指定字符串的所有实例替换为给定的替换,而不仅仅是字符串开头和结尾的那些。

【讨论】:

  • Trim() 也可以删除非空白字符。方法重载需要一个字符数组来修剪。
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    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
    

    TL;DR:如果您只想从字符串的开头或/和结尾删除单个字符,请使用Trim(),否则请调用Replace()

    【讨论】:

      【解决方案4】:
      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);
      

      在这种情况下,o/p 将是mahtab khan

      如果你想删除字符串之间的空格(在这种情况下输出将是 mahtabalam)

      string name=Console.ReadLine(); //input be mahtab alam
      string result= name.Replace(" ",string.Empty);
      Console.WriteLine(result)
      

      【讨论】:

        【解决方案5】:

        String.Trim() 将只删除前导和尾随空格。所以你必须使用String.Replace() 来达到你的目的。

        【讨论】:

          【解决方案6】:

          Trim 消除前导和尾随空格,而 Replace 更改字符串数据。它将一个子字符串的所有出现更改为另一个子字符串。它还处理字符替换。

          【讨论】:

            【解决方案7】:

            替换将替换字符串中的任何位置。 Trim 只会从字符串的开头和结尾剪掉空格.....所以他们实际上做了不同的事情。

            【讨论】:

              【解决方案8】:

              正如尼克齐默尔曼所说,Trim() 从字符串的开头和结尾删除所有空白字符。但是你可以用不同的方式来使用它:

              Trim(char[] trimChars) 删除作为参数传入的数组中指定的一组字符的所有前导和尾随出现。

              Check MSDN

              【讨论】:

              • 我很清楚 Trim() 的重载。它仍然没有使 Trim() 和 Replace() 等效。它们的用途不同。
              猜你喜欢
              • 2020-06-12
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2017-01-18
              • 2017-09-20
              • 1970-01-01
              • 2022-12-15
              • 2018-12-04
              相关资源
              最近更新 更多