我正在尝试做的是尝试将空格大小减少到1个字符(删除任何不需要的空格。我该如何处理这个任务?
PS:没有正则表达式
编辑:谢谢,已经成功,感谢分裂+加入建议。不幸的是,无法提出任何回应,因为沮丧的青少年已经让我误解了“对网站来说这个问题太简单了”
EDIT2。:如果有句子,请如何确保它不会删除句子前面的空格?
答案 0 :(得分:5)
怎么样?
string.Join(" ",
myString.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries))
修改强>
作为扩展名
public static string RemoveWhiteSpaces(this string s)
{
return string.Join(" ", s.Split(new char[] { ' ' },
StringSplitOptions.RemoveEmptyEntries));
}
myString.RemoveWhiteSpaces();
答案 1 :(得分:4)
字符串类的扩展名
public static string RemoveExcessSpaces(this string str)
{
StringBuilder sb = new StringBuilder(str.Length);
bool first = true;
for (int i = 0; i < str.Length; i++)
{
char c = str[i];
switch (c)
{
case '\r':
case '\n':
case '\t':
case ' ':
if(first)
{
sb.Append(c);
first = false;
}
else
continue;
break;
default:
sb.Append(c);
first = true;
break;
}
}
return sb.ToString();
}
用
调用它string result = "This is a test whit \t\t\r\n multiple spaces";
result = result.RemoveExcessSpaces();
Giving credit to the original idea
当然,应该被视为空格的字符集可以通过字符列表来定义(或使用Char.IsWhiteSpace)但是这可能对性能更好
答案 2 :(得分:1)
您可以使用此代码:
public static String WhiteSpaceReducer(String value) {
if (String.IsNullOrEmpty(value))
return value;
Boolean wasWhiteSpace = false;
StringBuilder Sb = new StringBuilder();
foreach (Char Ch in value)
if (Char.IsWhiteSpace(Ch)) {
if (!wasWhiteSpace)
Sb.Append(Ch);
wasWhiteSpace = true;
}
else {
wasWhiteSpace = false;
Sb.Append(Ch);
}
return Sb.ToString();
}
...
String test = " test me out ";
String result = WhiteSpaceReducer(test);
答案 3 :(得分:0)
你这样做
string myString = "I'm too lazy for research.";
myString = Regex.Replace(myString, @"\s+", " ");