【问题标题】:How to replace multiple different chars with white space?如何用空格替换多个不同的字符?
【发布时间】:2009-10-28 02:45:47
【问题描述】:

如何为每个字符实例用空格替换不同/多个字符?

要替换的字符是\ / : * ? < > |

【问题讨论】:

    标签: c# string replace


    【解决方案1】:

    您可以使用 string.Split 和 string.Join 来实现:

    string myString = string.Join(" ", input.Split(@"\/:*?<>|".ToCharArray())); 
    

    出于好奇对此进行了性能测试,它比正则表达式方法快得多。

    【讨论】:

    • +1 表示原创性和我开始但没有得出结论的方法(以及向我展示 string.Join 而不是 Split(..).Join()):)
    • 这个答案的有趣之处在于,根据您更熟悉的情况,这可能比正则表达式更具可读性。但对我来说,RegEx 更具可读性。
    • 根据 Jon Skeet 的回答 stackoverflow.com/a/1280227/52277 性能取决于输入格式
    【解决方案2】:
    Regex.Replace(@"my \ special / : string", @"[\\/:*?<>|]", " ");
    

    我可能有一些转义错误...:/

    【讨论】:

    • 不幸的是,他们错了,它不会编译。我认为您的意思是:Regex.Replace(@"my \ ?? special / : string", @"[\\/:\*?&lt;&gt;|]", " ");(请注意,\? 等是允许的,但在字符类中不是必需的)
    【解决方案3】:

    System.Text.RegularExpressions.Regex.Replace(input, @"[\\/:*?&lt;&gt;|]", " ")

    【讨论】:

    • 其实我认为你的意思。 @"[\\/:*\?\\|]",因为其中许多字符是 Reg Ex 控制字符。
    • 正则表达式控制字符不是字符类中的正则表达式控制字符,-[ 和 `\` 除外。
    • 你说得对,我应该多考虑一下字符转义。我已经编辑了我认为正确的内容。
    【解决方案4】:

    String API methods in C#.

    如果你调用它七次,String.replace 会起作用。
    或者 String.indexOfAny 在一个循环中,使用 String.remove 和 String.insert。

    采用高效的代码行方式,正则表达式。

    【讨论】:

      【解决方案5】:

      你可以使用正则表达式来做到这一点

      static void Main(string[] args)       
      {        
          string myStr = @"\ / : * ? < > |";
          Regex myRegex = new Regex(@"\\|\/|\:|\*|\?|\<|\>|\|");
          string replaced = myRegex.Replace(myStr, new MatchEvaluator(OnMatch));
          Console.WriteLine(replaced);    
      }
      
      private static string OnMatch(Match match)
      {
          return " ";
      }
      

      【讨论】:

      • 发布代码时,将其缩进四个空格(或单击代码按钮)以使其正确着色和布局。
      【解决方案6】:

      这是一段可编译的代码:

      // input
      string input = @"my \ ?? spe<<||>>cial / : string";
      
      // regex
      string test = Regex.Replace(input, @"[\\/:*?<>|]", " ");
      
      // test now contains "my      spe      cial     string"
      

      注意:这篇文章是对原始 JustLoren 代码的修复,并不完全是我的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-01-11
        • 2011-09-04
        • 1970-01-01
        • 1970-01-01
        • 2021-11-13
        • 2010-11-19
        • 1970-01-01
        相关资源
        最近更新 更多