2015-06-19 67 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

相關問題