繁体   English   中英

我如何在原始字符串中找到捕获的子字符串的最后一个字符的位置

[英]how do i get the position in the original string where the last character of the captured substring found

大家好,这是我的原始字符串'010000111'

我需要找到这种模式'10000111'。所以我在正则表达式下面使用了这一点。

匹配m = Regex.Match(“ 010000111”,@“ [1] [0] [0] [0] [0] [1] +”);

我从正则表达式中得到了正确的答案。但是问题是我需要在原始字符串中获取捕获的字符串的最后一个字符的位置,根据我的示例,这意味着我捕获的模式为``10000111''我的最后一个索引是7,但是当与原始字符串进行比较时,它是8。

我使用了lastIndexOf('1')函数。但是它给出了捕获的字符串的索引。

你能帮我解决这个问题吗?

您不需要正则表达式即可执行此操作。

要检查字符串是否包含另一个字符串,请使用someString.IndexOf("someOtherString")方法。 这将为您提供序列中第一个字符的索引。

要获取最后一个字符的位置,您要做的就是将测试字符串的长度相加并减去1:

var firstString = "010000111";
var secondString = "10000111";

var positionOfSecondOverFirst = firstString.IndexOf(secondString); // 1

var firstContainsSecond = (positionOfSecondOverFirst >= 0); // true

var positionOfLastChar = positionOfSecondOverFirst + secondString.Length - 1; // 8

参考: https : //msdn.microsoft.com/library/k8b1470s(v=vs.110).aspx

您为什么要使用正则表达式的任何特殊原因? 我认为您要完成的任务只需使用IndexOf即可完成

public static int GetIndex()
{
    const string input = "010000111";
    const string substring = "10000111";

    var startIndex = input.IndexOf(substring);
    if (startIndex != -1)
    {
        return startIndex + substring.Length;
    }

    return -1;
}

您可以使用以下方法:

private int findLastIndex(string s1, string s2)
{
  if (s1.indexOf(s2)>-1)
  {
    return s1.indexOf(s2) + s2.Length - 1;
  }
  else
    return -1; //not found
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM