如何获得特定的子字符串的位置在一个字符串

问题描述:

我有一个字符串121712 1512 0025 64559 7259181568 701 013 2。现在按照我的要求我必须得到最后一个子串2StartIndexEndIndex。但这里的问题是与点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); 
      } 
     } 

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

+1

看起来这不是C – 2014-11-03 06:17:08

+1

这真的是C吗? – juanchopanza 2014-11-03 06:17:13

+1

@ThisaruGuruge对不起,我的错误,它发生了c,其实它的c# – 2014-11-03 06:21:30

你说的最后一个子字符串对吗?

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

你可以为任何字符串做只是像“21”,“12”或许多其他分配新的sting int inout变量。

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

您希望理解我的问题。我想再指出一点,假设不存在可变值在字符串中间或其他位置,除了最后一个地方,假设您在此情况下给出了解决方案,该解决方案将如何进行工作? – 2014-11-03 07:12:09

+0

雅它确定....它会工作...你的目标是你只想得到最后一个子字符串.....如果相同的子字符串存在于开始或中间你不需要你只需要最后一个子字符串.. .. – 2014-11-03 07:16:32

+0

它将适用于所有情况你可以检查它 – 2014-11-03 07:17:06

如果我正确理解你,你想找到一个字符串中的最后一个子字符串的发生率。该String对象在C#中有专为正是这种,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,如果他们无法找到子串的发生率。此外,如果只有一个子字符串的发生,他们都会返回相同的值。

+0

行。让我让它更清楚。假设子字符串是'21'而不是'2',它可以在整个字符串中的任何位置作为单独的子字符串.IN这种情况下,我的目标是获得startindex和endindex,这样我就可以通过给出这个数字来得到这个子字符串 – 2014-11-03 06:34:49

+0

@HansalMehta没关系 - 只需用'2'替换'21'即可。两种方法都接受一个普通的旧字符串 – furkle 2014-11-03 06:38:05

+0

其实我的担心是''2'也出现在'121712'中。如果我试图找到'2'的索引,它将始终从第一次出现即从'121712'得到它,而我们希望从最后一个地方或其他只有'2'存在的地方,并且在示例情况下也是相同的'23' – 2014-11-03 06:45:02