我有一个字符串121712 1512 0025 64559 7259181568 701 013 2
。现在根据我的要求,我必须得到最后一个子字符串2
StartIndex
和EndIndex
。但这里的问题是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);
}
}
请帮我解决这个问题..谢谢。
答案 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。另外,如果只有一个子串的发生,它们都将返回相同的值。