【问题标题】:Replacing few different characters in a string替换字符串中的几个不同字符
【发布时间】:2011-02-10 19:44:07
【问题描述】:

我尝试替换某些字符串14/04/2010 17:12:11 中的几个字符并获得例如下一个结果:

14%04%2010%17%12%11

我知道方法Replace,但它的定义看起来像Replace(Char,Char)。这意味着在方法链中使用它 3 次。看起来不太地道。如何以最佳方式解决问题?常用表达?有什么办法可以逃脱?

【问题讨论】:

  • 注意:Replace 也可以作为这样的构造函数:Replace(String, String)

标签: c# .net string replace


【解决方案1】:
Regex.Replace(myString, "[/ :]", "%");

简单而优雅!

【讨论】:

  • 有没有不使用正则表达式的简单方法?
  • 是否需要将输入字符串作为第一个参数传递?
  • 正则表达式是最简单的方法。
  • 正如您所指出的,唯一的其他简单方法是调用 Replace 三次 - myStr = myStr.Replace('/', '%').Replace(' ', '%').Replace (':', '%');
  • 现在看起来不错。我无法想象有多少行代码正则表达式让我免于打字!
【解决方案2】:

另一种Regex 方法,尽管我不同意在这里使用它。这只是替换任何非数字字符:

string date2 = Regex.Replace(date1, @"\D", "%");

【讨论】:

    【解决方案3】:

    如果非要经常做,写个方法:

    static string Replace(string s, string c, char n)
    {            
        for (int i = 0; i < c.Length; i++)
            s = s.Replace(c[i], n);            
        return s;
    }
    

    例如

    string s1 = "14/04/2010 17:12:11";                
    string s2 = Replace(s1, "/ :", '%'));
    

    【讨论】:

      【解决方案4】:

      链它:

      string s1 = "14/04/2010 17:12:1";
      
      string s2 = s1.Replace("/","%").Replace(" ","%").Replace(":","%");
      

      【讨论】:

      • 请注意,您可以使用字符串 s2 = s1.Replace('/','%').Replace(' ','%').Replace(':#, '%'); (注意我用''替换了“”)以获得更好的性能!事实上,这也将比正则表达式变体快得多。
      猜你喜欢
      • 2012-12-15
      • 2022-12-15
      • 2020-06-02
      • 2017-01-06
      • 2020-09-14
      • 2020-04-06
      • 2020-08-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多