如何获取字符串中第二个逗号的索引

时间:2014-03-26 17:44:24

标签: c# .net string indexof

我在一个数组中有一个字符串,其中包含两个逗号以及制表符和空格。我试图在字符串中剪切两个单词,两个单词都在逗号之前,我真的不关心标签和空格。

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;

那么,我如何得到第二个逗号的索引,以便得到我的第二个字符串?

我真的很感谢你的帮助!

2 个答案:

答案 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++;,并更改错误消息以便清晰。