关于C#中字符串替换的快速问题

时间:2010-11-16 22:36:10

标签: c#

我有一个字符串“a; b; c d; e”

如何删除“;”周围的空白区域但保持一个字符之间。所以在更换之后,我想得到“a; b; c d; e”

谢谢

5 个答案:

答案 0 :(得分:6)

如果您在;

之前或之后只有一个空格,这将有效
var clean = "a ; b; c d; e".Replace(" ;", ";").Replace("; ", ";");

如果在;之前或之后可能有多个空格,您可以在一个循环中运行它,退出条件是找不到" ;""; "

或者,正则表达式可以完美地用于此。

答案 1 :(得分:1)

使用正则表达式。

我添加了代码

function stripSpacesKeepSemicolons(string dirty) {
    private static Regex keepSemicolonStripSpacesRegex = new Regex("\\s*(;)\\s*");
    return keepSemicolonStripSpacesRegex.Replace(dirty,"$1");
}

答案 2 :(得分:1)

string source = "a ; b; c d; e";
string result = source.Replace(" ;", ";").Replace("; ", ";");

答案 3 :(得分:1)

这适用于分号周围的任意数量的空格:

var str = "a ; b; c d; e";
while (str.IndexOf("; ") > -1 || str.IndexOf(" ;") > -1) {
  str = str.Replace("; ", ";").Replace(" ;", ";");
}

答案 4 :(得分:1)

这个怎么样:

  string s = "a ; b; c d; e";
  string x = String.Join(";", s.Split(';').Select(t => t.Trim()));

无论涉及多少空格,这都应该有效。