2013-04-16 73 views
1

(限制:系統; ONLY)分割字符串,並刪除空格沒有。選擇

我希望能夠以一個字符串分割成一個數組,並刪除空格,我有這個目前:

string[] split = converText.Split(',').Select(p => p.Trim()).ToArray(); 

編輯:也.ToArray不能被明顯使用。

但問題是,我不能使用任何其他核心系統方法。那麼我怎樣才能修剪空間從一個分裂或數組沒有使用.select或其他非核心的方式。

謝謝!

回答

7
string[] split = 
    convertText.Split(new[]{',',' '}, StringSplitOptions.RemoveEmptyEntries); 

通過爲您的拆分條件添加一個空格,當您具有RemoveEmptyEntries時,它將擺脫它們。但是,如果其中有空格的條目將會失敗。在這種情況下,你可以只: -

string[] split = 
     convertText.Split(new[]{','}, StringSplitOptions.RemoveEmptyEntries); 

for (int index = 0; index < split.Count; index++) 
{ 
    split[index] = split[index].Trim(); 
} 
+0

謝謝!這工作。 – Kennyist

+2

這種類型是基於我以前所知道的......如果你有一個字符串「mega ozs,blah」,這將會失敗,因爲它會分裂成mega和oucnes –

+0

有機會得到一個空字符串在結果數組中。正如@凱斯所說,*「如果有空格的條目,這將失敗」*。 – Sergey

1

你可以做一個輔助方法,從每個字符串修剪空間

private IEnumerable<string> SplitAndTrim(char splitChar, string str) 
{ 
    if (!string.IsNullOrEmpty(str) && str.Contains(splitChar)) 
    { 
     foreach (var item in str.Split(splitChar)) 
     { 
      yield return item.Trim(); 
     } 
    } 
    yield return str; 
} 

用法:

string[] split = SplitAndTrim(',', converText).ToArray(); 
+0

這段代碼根本不正確。在結果數組中有一個獲得一個*空字符串*的機會,並且最初的* str *值也會被放棄。事實上,你會從* SplitAndTrim(',',「text,」)*得到錯誤的結果* {「text」,「」,「text,」* https://dotnetfiddle.net/zDAzAe – Sergey

0

應該對所有的情況下工作:

public static class TrimHelper 
{ 
    public static string[] SplitAndTrim(this string str, char splitChar, StringSplitOptions options = StringSplitOptions.RemoveEmptyEntries) 
    { 
     List<string> result = new List<string>(); 

     if (str != null) 
     { 
      foreach (var item in str.Split(splitChar, options)) 
      { 
       string val = item.Trim(); 

       if (options == StringSplitOptions.RemoveEmptyEntries && val == string.Empty) 
        continue; 

       result.Add(val); 
      } 
     } 

     return result.ToArray(); 
    } 
} 

用法:

string[] split = "text, ".SplitAndTrim(',').ToArray();