从逗号之间的字符串中提取文本

我想只提取两个逗号之间的那些单词。 所以,如果字符串是Ab Java,DE,78801答案必须是DE我已经尝试过这段代码,但它无效

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

如果你的字符串总是 2个逗号,你可以使用String.Split ;

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

请记住,这将为您生成带有额外空白区域的DE

在此处输入图像描述

如果您不想要该空格,可以使用TrimStart()将其删除。

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

您在Substring中的开始和结束解析为相同的值。

尝试使用split并获取第二项,当然这假设您的输入始终遵循示例中的模式。 否则你需要做一些更复杂的事情。

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

试试这个

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

假设你的字符串总是只有两个逗号,那么:

 search.Split(", ")[1] 

会给你想要的文字。

试试这个…

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

试试这个。 它可以工作……

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

这是我用正则表达式解决的问题。 它可能比String.Split解决方案慢,但它更容易阅读 – 特别是如果模式将随着时间的推移而发展。

解决方案看起来像这样:

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

这写DE没有周围的空格。 正则表达式实例应该是类的静态成员,因为我认为这是在循环中发生的…