正则表达式 - 从空间剪切字符串,但是使用此空格

时间:2011-10-22 04:01:23

标签: c# regex string

正则表达式的输入字符串是来自另一个字符串的临时数量的字符。因此它可以是输入字符串末尾的单词的不完整部分。正则表达式必须剪切单词的不完整部分和字符串末尾的空格。因为在这个字符串的末尾必须有整个单词。所以我写这个来削减最后一个字的不完整部分(C#):

Regex.Replace(s, @"([^\s]*){1}$", String.Empty)

如你所见,我使用空格作为正则表达式的标记来停止切割。 但是如何削减这个空间?它必须在同一个正则表达式中,因为我不想在这个简单的操作中使用另一个正则表达式或“修剪”函数。我知道使用TrimEnd更容易,但它并不优雅。所以这只是学术问题。 :)

2 个答案:

答案 0 :(得分:2)

您不需要TrimEnd() 正则表达式改进。只需使用Trim(),就像这样:

s.Trim();

编辑:如果您还需要删除最后一个单词,并且您有LINQ,您可能会喜欢这样:

string[] split = s.Split(new char[] {' '});
s = split.Take(split.Length - 1).Aggregate((m, n) => m + ' ' + n);

答案 1 :(得分:0)

您可以只包含一个可选空格:

\s?([^\s]*){1}$

可以简化:

\s?\S*$