我想只提取两个逗号之间的单词。 所以,如果字符串是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);
答案 0 :(得分:5)
如果你的字符串总是 2个逗号,你可以使用String.Split
来表示它;
string search = "Ab Java, DE, 78801 ";
Console.WriteLine(search.Split(',')[1]); // DE
请记住,这会使DE
生成额外的空格。
如果您不想要该空格,可以使用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
而不包含空格。正则表达式实例应该是类的静态成员,因为我认为这是在循环中发生的......