2015-05-21 105 views
2

我只想提取兩個逗號之間的單詞。 因此,如果字符串爲AB的Java,DE,78801的答案必須降 我曾嘗試這個代碼,但它不工作從逗號之間的字符串中提取文本

string search = "Ab Java, DE, 78801 "; 
int index = search.IndexOf(","); 
string result = search.Substring(search.IndexOf(",") ,index); 
MessageBox.Show(result); 
+2

你的字符串有_always_兩個逗號? –

+0

是它總是有兩個逗號 –

回答

4

如果字符串有總是 2逗號,你可以使用String.Split它喜歡;

string search = "Ab Java, DE, 78801 "; 
Console.WriteLine(search.Split(',')[1]); // DE 

請記住,這將您生成DE與前一個額外的空白。

enter image description here

如果你不想說白了空間,可以使用TrimStart()將其刪除。

Console.WriteLine(search.Split(',')[1].TrimStart()); //DE 
+2

這是什麼'Dump()'方法? – Shaharyar

+1

我找不到它給出錯誤的轉儲方法 –

+2

@Shaharyar它是LINQPad的擴展方法。 http://stackoverflow.com/questions/2699466/linqpad-dump-extension-method-i-want-one我用這個工具來生成一些代碼示例,但看起來有時可能會讓人困惑。刪除它。 –

3

你的起點和終點在你的子字符串解析爲相同的值。

嘗試使用拆分並獲取第二個項目,當然這假定您的輸入始終遵循您的示例中的模式。否則,你需要做一些更復雜的事情。

string[] searchItems = search.Split(','); 
string result = searchItems[1].Trim(); // will output DE 
0

假設你的字符串始終只有兩個逗號,然後:

search.Split(", ")[1] 

會給你想要的文字。

1

試試這個

string[] splitedStr=search.Split(','); 
string NewStr=splitedStr[1].ToString(); 
0

嘗試......

String str = "Ab Java, DE, 78801 "; 
String[] myStrings = str.split(","); 
String marco = myStrings[1]; 
0

嘗試。它可以工作...

string[] arrayStr = search.Split(','); 
int len = arrayStr.Length; 
for(int i =1;i<=len-2;i++) 
{ 
    MessageBox.Show(result); 
} 
+0

只是爲了便於閱讀:'我<= len-2'等於'我 Markus

0

這是我會用正則表達式解決的。它可能比解決方案要慢,但它更容易閱讀 - 特別是如果模式將隨着時間推移而發展。

該解決方案將不是這個樣子:

string search = "Ab Java, DE, 78801 "; 
Regex r = new Regex(", *(.*) *,", RegexOptions.Compiled); 
Console.WriteLine(r.Match(search).Groups[1].ToString()); 

這不周圍空間寫DE。正則表達式實例應該是你的類的靜態成員,因爲我假設這是發生在一個循環內...