2014-02-09 64 views
1

空間和斜槓我wan't通過斜線分割字符串分割字符串與斜線

我當前的代碼如下所示:

string value = "Ctws Cwts/Rotc/Lts Ctws"; 
    string[] tokens = value.Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries); 
    foreach (var token in tokens) 
    { 
     Console.Write(token); 
    } 

輸出,這是一個:「 CWTS CWTS」, 「後備軍官訓練隊」, 「廖運華CWTS」

現在我想我的輸出中是這一個:「CWTS」, 「後備軍官訓練隊」, 「廖運華」

編輯:

一些問題的答案表明,我會用鮮明的()

如果什麼值是:「Something1 CWTS/ROTC /廖運華Something2」

輸出應該是相同的:「CWTS」, 「後備軍官訓練隊」, 「廖運華」

回答

1

只需使用Distinct

string[] tokens = value 
       .Split(new char[] { '/', ' ' }, StringSplitOptions.RemoveEmptyEntries) 
       .Distinct(); 

也不要忘了包括空間以分隔符

根據您的編輯,你可以做以下的,如果你想exacly這些值:所有輸入

var values = new List<string> { "Cwts", "Rotc", "Lts" }; 
string[] tokens = value 
       .Split(new char[] { '/', ' ' }, StringSplitOptions.RemoveEmptyEntries) 
       .Where(t => values.Contains(t)) 
       .Distinct(); 
+0

+1我認爲你需要同時使用正斜槓和空間delimeters.but'鮮明的()'是什麼OP是尋找。 –

+0

@SudhakarTillapudi耶剛注意到了。 –

+0

試過你的解決方案,它不工作。我有相同的輸出。而且,如果給定的值是「something 1 Cwts/Rotc/Lts Something2」。 – dbar

1

您可以使用多個"Cwts", "Rotc", "Lts"你想要分割字符串的字符。您可以使用String.Split()函數的過載之一。要刪除重複條目,您可以使用Distinct()功能。

因此,這裏是你的發言

string[] tokens = value.Split(new char[] { '/',' ' }, 
        StringSplitOptions.RemoveEmptyEntries).Distinct().ToArray(); 

編輯:你編輯的問題後,似乎有點混亂,我說你想要什麼來實現的。我所瞭解的是,您在包含/spaces的單個字符串中找到要查找的字符串列表。可以使用Intersect方法。

List<string> requiredValues = new List<string> { "Cwts", "Rotc", "Lts" }; 

var tokens = requiredValues.Intersect(value.Split(new char[] { '/', ' ' }, 
      StringSplitOptions.RemoveEmptyEntries)); 
+0

使用Intersect運算符是一個很好的解決方案,但它會調用Distinct冗餘,並且對ToList的調用也不需要。 –

+1

@AluanHaddad是的,你是對的。只是忘了刪除。 ccp錯誤:)查看編輯後的帖子 – Sachin

+1

我知道這種感覺 –

1
string value = "Ctws Cwts/Rotc/Lts Ctws"; 
var terms = new HashSet<String> { "Ctws", "Rotc", "Lts" }; 

var tokens = 
    from s in value.Split(new [] { ' ','/' }, 
     StringSplitOptions.RemoveEmptyEntries) 
    group s by s into g 
    where terms.Contans(g.Key) 
    select g.Key; 

這應該照顧分裂過濾和刪除重複的。

1

使用不同的用2個PARAMS

var tokens = value 
       .Split(new char[] { '/', ' ' }, StringSplitOptions.RemoveEmptyEntries) 
       .Distinct();