2012-02-23 96 views
0

我有這樣的事情:獲取字符串數組的子字符串的最佳方法是什麼?

string[] split = ListOfUsers.Split(new Char[] { ';', ',', ' ' }); 

在「拆分」每個字符串的開頭有一個「@」符號,我想擺脫它。如果沒有進入for循環,那麼獲取此數組的子字符串的理想方法是什麼?我可以使用Linq嗎?

爲尋找謝謝:)

+0

您可以使用與string.replace( 「@」, 「」)在google上查找string.Replace()方法..噸的例子 – MethodMan 2012-02-23 09:38:39

回答

3

有所做的正是這一點String.Trim過載:刪除字符串的開始和結束指定的字符:

string[] split = ListOfUsers.Split(new Char[] { ';', ',', ' ' }); 
string[] trimmed = split.Select(s => s.Trim('@')).ToArray(); 

如果字符串包含多個@ S IN的開頭或以@結束這會比你想要的做得更多。在這種情況下,你也可以簡單地使用String.Substring

string[] split = ListOfUsers.Split(new Char[] { ';', ',', ' ' }); 
string[] trimmed = split.Select(s => s.Substring(1)).ToArray(); 
+0

選擇返回IEnumerable ,而不是string []。也會修剪字符串的結尾以及開始。 – sweaver2112 2012-02-23 09:45:49

+0

@ sweaver2112:謝謝你的收穫,增加了一個明確的數組轉換。可能的額外修剪是所有解決方案的問題,我已經提到過。 – Jon 2012-02-23 09:47:51

+0

不需要使用LINQ,因爲您可以使用將在'@上分割的'Split'重載,並刪除空條目。 – Oded 2012-02-23 09:50:05

0

可能只是添加

ListOfUsers.Split(new Char[] { ';', ',', ' ', '@' }) 

所以每串子將有你需要的字符串。

1
var split = ListOfUsers.Split(new Char[] { ';', ',', ' ' }); 
var cleaned = split.Select(s => s.Substring(1)); 
1

除了修整,作爲喬恩建議您可以使用正則表達式:

Regex regex = new Regex("@\\w*"); 
var userNames = regex.Matches(ListOfUsers).OfType<Match>().Select(x => x.Value); 
相關問題