如何获取字符串中的特定子字符串位置

时间:2014-11-03 06:16:05

标签: c# string substring

我有一个字符串121712 1512 0025 64559 7259181568 701 013 2。现在根据我的要求,我必须得到最后一个子字符串2 StartIndexEndIndex。但这里的问题是2来自第一个子串121712的点,所以它从那里开始,我不想要... 这是我试过的代码..

        string s = "121712  1512  0025            64559         7259181568        701  013              2 ";

        string inout = "2";

        string[] arrs = s.Split(' ');

        for (int i = 0; i <= arrs.Length; i++)
        {
            string str = arrs[i];
            if (str == inout)
            {

                int startIndex = s.IndexOf(arrs[i]);

                int endIndex = s.IndexOf(" ", startIndex);

                int difference = endIndex - startIndex;

                string inoutSubstring = (startIndex + "," + difference);
            }
        }

请帮我解决这个问题..谢谢。

2 个答案:

答案 0 :(得分:3)

你说最后一个子串正确吗?

s.LastIndexOf(inout)将给出Inout字符串的起始索引。现在我需要在s字符串中获取Inout的endindex。将inout.Lenght-1添加到s.LastIndexOf(inout)中,它将给出inout字符串的Last索引。

你可以为任何字符串做一个新的sting int inout变量,如&#34; 21&#34; ,&#34; 12&#34;或许多其他。

        string inout = "2";
        int startIndex;
        int endIndex;
        startIndex = s.LastIndexOf(inout);
        endIndex = startIndex + inout.Length-1;

答案 1 :(得分:0)

如果我理解正确,您希望找到字符串中子字符串的最后一次出现。 C#中的String对象有一个专门为此设计的方法,String.LastIndexOf

string s = "121712  1512  0025            64559         7259181568        701  013              2 ";

string inout = "2";

string[] arrs = s.Split(' ');

for (int i = 0; i <= arrs.Length; i++)
{
     string str = arrs[i];
     if (str == inout)
     {
         int startIndex = s.IndexOf("2");
         int endIndex = s.LastIndexOf("2");
     }
 }

请注意,如果无法找到子字符串的发生率,这两种方法都将返回-1。另外,如果只有一个子串的发生,它们都将返回相同的值。