如何从字符串的特定部分删除空格和换行符

本文关键字:删除 空格 换行符 定部 字符串 | 更新日期: 2023-09-27 17:57:25

所以我的问题是这样的,假设我有一个字符串:

a b c d e f g

我只想删除 b 和 c 之间的任何空格或换行符,但保留其余部分。从本质上讲,上面的例子应该是这样的:

abcd e f g

我知道如何使用 replace 方法替换整个字符串中的空格和换行符,但不确定如何为字符串的特定部分执行此操作。任何帮助将不胜感激!

编辑:(对于斯特凡克米特夫)

输入:

hello my name is martin
I am from Paris in France

电流输出:

hellomynameis martin  I am from Paris in France

预期输出:

hellomynameis martin I am from Paris in France

它为换行符添加了两个空格,我不知道为什么

如何从字符串的特定部分删除空格和换行符

使用 LINQ 执行此操作:

string s = "a b c d e f g";
var split = s.Split();
string joined = string.Concat(split.Take(3)) + string.Join(" ", split.Skip(3));

编辑第二个示例:

string s = @"hello my name is martin
I am from Paris in France";
var split = s.Split(new[] {" ", Environment.NewLine}, StringSplitOptions.None);
string part1 = string.Concat(split.Take(3));
string part2 = string.Join(" ", split.Skip(3));
string joined = string.Format("{0} {1}", part1, part2);

这现在应该按预期工作。

使用Regex.Replace函数。

Regex.Replace(str, @"(?s)(?<=^(?:'s*'S){4})(.*)|'s", "$1");

正则表达式斯特罗姆

它应该去掉前 4 个字母之间的空格和换行符。这封信并不重要。

您可以使用正则表达式执行此操作,将前四个字母匹配到捕获组中,然后将它们用作替换:

var r = Regex.Replace("a b c d e f g", @"^('w)'s*('w)'s*('w)'s*('w)", "$1$2$3$4");

此正则表达式有四个组,编号为 1 到 4。这些组由字母组成,它们由零个或多个空格分隔。替换将捕获的组放在一起,周围没有空格。

演示。