注意到一些代碼,如在string.Split()之後的任何更好的方法來TRIM()?
string[] ary = parms.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
for(int i = 0; i < ary.Length; i++)
ary[i] = ary[i].Trim();
工作正常,但不知道是否有更好的方法來做到這一步
注意到一些代碼,如在string.Split()之後的任何更好的方法來TRIM()?
string[] ary = parms.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
for(int i = 0; i < ary.Length; i++)
ary[i] = ary[i].Trim();
工作正常,但不知道是否有更好的方法來做到這一步
string[] trimmedStrings = parms.Split(',')
.Select(s => s.Trim())
.Where(s => s != String.Empty)
.ToArray();
順便說一句,可以考慮使用像List<string>
而不是傳統陣列的通用類型化列表
IList<string> trimmedStrings = parms.Split(',')
.Select(s => s.Trim())
.Where(s => s != String.Empty)
.ToList();
你的代碼與OPs不一樣。例如。這個字符串「,,,,,」在OPs代碼中的數組中有零個項目,在你的數組中有6個項目 –
「Legacy arrays」? 'List'不是'Array'的替代品。 –
@Rune FS:感謝您指出此問題,修正了 – sll
儘管如此2的步驟,但不循環
ary = ary.Select(str => str.Trim()).ToArray();
或
ary = ary.Split(',').Select(str => str.Trim())
.Where(str => str != string.Empty)
.ToArray();
爲了保持RemoveEmptyEntries行爲,並刪除那些trimable
這確實是非常整齊的項目:
//This could be inlined to the row below if you wanted
Regex oRE = new Regex(@"\s*\,\s*");
string TestString = ",, test , TEST 2 ,Test3";
//This is really the line you're looking for - the rest of the code just sets up an example
string[] Results = oRE.Split(TestString.Trim());
foreach(string S in Results){
Console.WriteLine(">>" + S + "<<");
}
爲一個班輪:
string[] Results = new Regex(@"\s*\,\s*").Split(TestString.Trim());
如果您刪除了您的示例代碼,則您的參數會更強!製作這個1-liner會很好。 –
如你所願。更新並具有兩者。 =) – Dracorat
什麼是'修剪()'? – Oded
@Oded,打字錯誤:) –
@ Moo-Juice - 天哪,傻,我期待發布的代碼是可編譯的。 – Oded