2015-06-19 68 views
0

所以我的问题是这样的,可以说,比如我有一个字符串:如何从字符串的特定部分删除空格和换行符?

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 

它增加了两个空格用于越线,我不知道为什么

+1

什么是确定哪些空白是合适的标准?这听起来像你应该把重点放在根据该标准分开你的字符串,并从只有你想要删除的部分删除空白。 –

+0

查看msdn上C#字符串类中的方法https://msdn.microsoft.com/zh-cn/library/system.string_methods(v=vs.110).aspx IndexOf,SubString或Split并创建一个新的字符串从选定的作品? – AnthonyLambert

+1

如果输入是'b c a d e f',输出是什么? –

回答

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

预期这应该现在的工作。

+0

刚刚试过你的方法,而不是保留字符串其余部分的空白,而是再添加一个。所以我得到了像abcd e g这样的东西。因此d和e之间以及f和g之间的两个空格。 – sparta93

+0

这是我的输出:'abcd e f g'它错了吗? – stefankmitph

+0

检查编辑 – sparta93

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

使用Regex.Replace函数。

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

RegexStrom

相关问题