正则表达式-从末尾用空格截断字符串,但是使用这个空格

本文关键字:空格 字符串 正则表达式 | 更新日期: 2023-09-27 18:12:17

regex的输入字符串是来自另一个字符串的随机字符数。所以它可以是输入字符串末尾一个单词的不完整部分。Regex必须截断单词的不完整部分和字符串末尾的空格。因为必须有一个完整的单词在这个字符串的末尾。所以我这样写是为了去掉最后一个单词(c#)的不完整部分:

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

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

正则表达式-从末尾用空格截断字符串,但是使用这个空格

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

s.Trim();

编辑:如果你也需要删除最后一个单词,并且你有LINQ,你可能像这样:

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

你可以像这样加入一个可选的空格:

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

可以简化为:

's?'S*$