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

时间:2015-06-19 17:11:42

标签: c# string

所以我的问题就是这个,比方说我有一个字符串:

a b c d e f g

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

abcd e f g

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

编辑:(对于stefankmitph)

输入:

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

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

3 个答案:

答案 0 :(得分: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的组。这些组由字母组成,它们由零个或多个空格分隔。替换将捕获的组和位置放在一起,周围没有空格。

Demo.

答案 1 :(得分:1)

使用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);

这应该按预期工作。

答案 2 :(得分:1)

使用Regex.Replace功能。

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

RegexStrom