Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 正则表达式-从末尾按空格剪切字符串,但使用此空格_C#_Regex_String - Fatal编程技术网

C# 正则表达式-从末尾按空格剪切字符串,但使用此空格

C# 正则表达式-从末尾按空格剪切字符串,但使用此空格,c#,regex,string,C#,Regex,String,regex的输入字符串是来自另一个字符串的临时字符数。因此,它可能是输入字符串末尾单词的不完整部分。正则表达式必须剪切单词的不完整部分和字符串末尾的空格。因为这个字符串的末尾必须有一个完整的单词。所以我写这篇文章是为了删去最后一个单词(C#)中不完整的部分: 如你所见,我使用空格作为正则表达式停止剪切的标记但是如何切割这个空间呢?它必须在同一个正则表达式中,因为我不想使用其他正则表达式或“Trim”函数来完成这个简单的操作。我知道使用TrimEnd更容易,但它并不优雅。所以这只是一个学术问题 您

regex的输入字符串是来自另一个字符串的临时字符数。因此,它可能是输入字符串末尾单词的不完整部分。正则表达式必须剪切单词的不完整部分和字符串末尾的空格。因为这个字符串的末尾必须有一个完整的单词。所以我写这篇文章是为了删去最后一个单词(C#)中不完整的部分:


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

您不需要
TrimEnd()
或正则表达式改进。只需使用
Trim()
,如下所示:

s.Trim();
编辑:如果您也需要删除最后一个单词,并且您有LINQ,您可能会喜欢这样:

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

您不需要
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*$

您只需包含如下可选空格:

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

这可以简化:


\s?\s*$

我不同意。使用“Trim”函数删除尾随空格比使用正则表达式的方法要优雅得多。我认为这是C#-编辑来包含标记的。而且,
{1}
是完全多余的。因此括号也是如此,我不同意。使用“Trim”函数删除尾随空格比使用正则表达式的方法要优雅得多。我认为这是C#-编辑来包含标记的。而且,
{1}
是完全多余的。因此也有括号。OP不是很清楚,但我认为他需要删除最后一个单词和最后一个空格。我修改了第一条消息以加深理解。OP不是很清楚,但我认为他需要删除最后一个单词和最后一个空格。我修改了第一条消息以加深理解。\s?\s*$-正是我需要的。谢谢但是第三个正则表达式甚至在结尾删去了不需要的整个单词。它必须只删除结尾处的不完整单词。因此,第二个正则表达式非常适合我的任务。))不客气。你更新的问题更清楚,所以我删除了第三个正则表达式。请记住接受正确答案。\s?\s*$-正是我需要的。谢谢但是第三个正则表达式甚至在结尾删去了不需要的整个单词。它必须只删除结尾处的不完整单词。因此,第二个正则表达式非常适合我的任务。))不客气。你更新的问题更清楚,所以我删除了第三个正则表达式。请记住接受正确的答案。