我在一个数组中有一个字符串,其中包含两个逗号以及制表符和空格。我试图在字符串中剪切两个单词,两个单词都在逗号之前,我真的不关心标签和空格。
My String看起来与此相似:
String s = "Address1 Chicago, IL Address2 Detroit, MI"
我得到第一个逗号的索引
int x = s.IndexOf(',');
从那里开始,我在第一个逗号的索引之前剪切了字符串。
firstCity = s.Substring(x-10, x).Trim() //trim white spaces before the letter C;
那么,我如何得到第二个逗号的索引,以便得到我的第二个字符串?
我真的很感谢你的帮助!
答案 0 :(得分:69)
你必须使用这样的代码。
int index = s.IndexOf(',', s.IndexOf(',') + 1);
您可能需要确保不要超出字符串的范围。我会把那部分留给你。
答案 1 :(得分:35)
我刚写了这个Extension方法,所以你可以得到字符串
中任何子字符串的第n个索引public static class Extensions
{
public static int IndexOfNth(this string str, string value, int nth = 1)
{
if (nth <= 0)
throw new ArgumentException("Can not find the zeroth index of substring in string. Must start with 1");
int offset = str.IndexOf(value);
for (int i = 1; i < nth; i++)
{
if (offset == -1) return -1;
offset = str.IndexOf(value, offset + 1);
}
return offset;
}
}
注意:在这个实现中,我使用1 = first,而不是基于0的索引。这可以很容易地更改为使用0 =首先,通过在开头添加nth++;
,并更改错误消息以便清晰。