2014-03-03 135 views
-1

我試圖分裂一個字符串這樣的可變數目:分割字符串用空格

7  300685 1235 200017 200018 200019 

7 
300685 
1235 
200017 
200018 
200019 

字符串數組。

我想出這個正則表達式,但它使空格太:

var myStrings = System.Text.RegularExpressions.Regex.Split(linea, @"\s+"); 

那是因爲我的目標是preceeds空格的任何字符串。如何不這樣做,只保留不是白色的字符串。

我知道這很容易通過從數組中刪除空字符串,但我想用正則表達式來完成。

+0

爲什麼在拆分字符串之前不要刪除多餘的空格? – Amber

+1

爲什麼使用正則表達式呢?只需在字符串上使用Split方法並刪除空條目即可。這比完成正則表達式足夠了 - 那麼理論上你只需修改()數組中的每個項目 –

+4

這個問題已經被回答了多少次?我不相信你在輸入這個問題的標題時沒有看到類似問題的列表 – Steve

回答

3

您可以使用StringSplitOptions.RemoveEmptyEntries枚舉與String.Split方法等;

返回值不包括包含空字符串

string s = "7  300685 1235 200017 200018 200019"; 
var array = s.Split(new []{" "}, StringSplitOptions.RemoveEmptyEntries); 
foreach (var item in array) 
{ 
    Console.WriteLine(item); 
} 

輸出將數組元素;

7 
300685 
1235 
200017 
200018 
200019 

這裏一個demonstration

5

我會建議簡單地使用string.Split

string[] s = yourString.Split(new char[] {' '}, StringSplitOptions.RemoveEmptyEntries); 

MSDN

+0

你的第一個參數是不正確的。 –

+0

'Split'是一個實例方法。 –

+0

@ Selman22:我在檢查文檔時看到了這一點。謝謝。 –

6

爲什麼不使用String.Split方法?

var myStrings = linea.Split(new [] { ' ' }, StringSplitOptions.RemoveEmptyEntries); 

另一種方式與SplitLINQRemoveEmptyEntries選項:

var myStrings = linea.Split().Where(x => x.All(char.IsDigit)).ToArray(); 

也有一個RegexOption.IgnorePatternWhitespace參數,你可以通過你的Regex.Split方法來刪除空格:爲什麼

var myStrings = Regex.Split(linea, @"\s+", RegexOptions.IgnorePatternWhitespace); 
2

這不適合你:

string str = "7  300685 1235 200017 200018 200019"; 
str.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries); 

您還可以使用String.Trim刪除一組空白字符的所有前導和尾隨出現。

+0

'Split'是一個實例方法(非靜態)。 –

1

試試這個

string[] splitvalue = string.Split(str, ' ', StringSplitOptions.RemoveEmptyEntries); 

或:

string[] splitvalue = str.Split(null); 

或:

string[] splitvalue = str.Split(new char[0]); 
+1

'Split'是非靜態的(一種實例方法)。 –

0
var list = "Your String".Split(' ').Where(p =>!string.IsNullOrWhiteSpace(p));