C# 替换字符串中第一个单词前的空格,然后删除多余的空格

C# 替换字符串中第一个单词前的空格,然后删除多余的空格,c#,regex,string,C#,Regex,String,我有这样的字符串: string stuff = " this is something you could use one day"; 我正在使用以下函数删除多余的空格: private string removeThem(string str) { if (str!= null){ return Regex.Replace(str, @"\s+", " "); }else{ return ""; } }

我有这样的字符串:

string stuff = "    this    is    something you could    use one day";
我正在使用以下函数删除多余的空格:

private string removeThem(string str) { 
    if (str!= null){
        return  Regex.Replace(str, @"\s+", " "); 
    }else{
        return "";
    }
}
应用该函数后,我得到:

" this is something you could use one day"
但我想:

"this is something you could use one day"

如何操作?

在运行
Regex.Replace()
之后,您可以轻松地运行
Trim()


但是,如果希望单个正则表达式删除连续空格并修剪尾随空格,可以尝试以下正则表达式:

^\s+|\s+$|\s+(?=\s)
什么都没有取代

^\s+
匹配字符串开头的所有空格

\s+$
匹配字符串末尾的所有空格


\s+(?=\s)
将匹配所有连续空格并保留一个。

在运行
Regex.Replace()后,您可以轻松地运行
Trim()


但是,如果希望单个正则表达式删除连续空格并修剪尾随空格,可以尝试以下正则表达式:

^\s+|\s+$|\s+(?=\s)
什么都没有取代

^\s+
匹配字符串开头的所有空格

\s+$
匹配字符串末尾的所有空格


\s+(?=\s)
将匹配所有连续的空格并留下一个。

我会完全避免使用正则表达式,因为它们几乎总是很难维护。如果有更直接的选择,我会用它

这个怎么样:

private string removeThem(string str)
{ 
    return String.Join(" ", (str ?? "").Split(new [] { ' ' },
        StringSplitOptions.RemoveEmptyEntries));
}

我会完全避免使用正则表达式——它们几乎总是很难维护。如果有更直接的选择,我会用它

这个怎么样:

private string removeThem(string str)
{ 
    return String.Join(" ", (str ?? "").Split(new [] { ' ' },
        StringSplitOptions.RemoveEmptyEntries));
}

在执行regex.replace之后可以使用trim,对吗?在执行regex.replace之后可以使用trim,对吗?