如何从字符串的特定部分删除空格和换行符
本文关键字:删除 空格 换行符 定部 字符串 | 更新日期: 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。这些组由字母组成,它们由零个或多个空格分隔。替换将捕获的组放在一起,周围没有空格。
演示。