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

时间:2015-05-21 06:13:18

标签: c#

我想只提取两个逗号之间的单词。 所以,如果字符串是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);

7 个答案:

答案 0 :(得分:5)

如果你的字符串总是 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

答案 1 :(得分:3)

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

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

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

答案 2 :(得分:1)

试试这个

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

答案 3 :(得分:0)

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

search.Split(", ")[1]

会为您提供所需的文字。

答案 4 :(得分:0)

试试这个......

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

答案 5 :(得分:0)

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

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

答案 6 :(得分:0)

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

解决方案看起来不像这样:

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

这会写DE而不包含空格。正则表达式实例应该是类的静态成员,因为我认为这是在循环中发生的......