我目前有这个类用一个替换连续的空格:
public static string RemoveSpacesLoop(string value)
{
if(value.Contains(" "))
{
return RemoveSpacesLoop(value.Replace(" ", " "));
}
else
{
return value;
}
}
它有效,但从长远来看可能会导致性能问题。有没有办法简化这个?
答案 0 :(得分:6)
您可以使用Regex
。例如:
var x = "123 456 789 999 0";
var y = Regex.Replace(x, @"\s{2,}", " ");
它将用单个空格替换所有多个空格。
您还可以迭代字符串中的字符并生成新字符串,将这些字符与空格进行比较,如下所示:
StringBuilder sb = new StringBuilder();
bool isSpaceFound = false;
foreach (char c in x)
{
if (c == ' ')
{
if (!isSpaceFound)
sb.Append(c);
isSpaceFound = true;
}
else
{
isSpaceFound = false;
sb.Append(c);
}
}
var y = sb.ToString();