【发布时间】:2016-03-23 01:58:45
【问题描述】:
假设您有一个字符串(“haystack”)和一个要搜索的子字符串(“needle”):
string haystack = "D0B11234 AM21ANP AM23AN1";
string needle = "AM21AN";
我正在寻找一种方法来找到索引或子字符串在被搜索的子字符串之后。
调用IndexOf() 返回针的开始 位置,这样index = 9 在这种情况下:
int index = haystack.IndexOf(needle);
我最初的想法是使用LastIndexOf(),但这会返回大海捞针中最后一次出现的开始索引。
正如在this similar question(可能还有其他人)中回答的那样,如果您想定位紧跟在needle 之后的字符,则需要将index 增加针的长度,如下所示:
int index = haystack.IndexOf(needle);
int indexAfterNeedle = index + needle.Length;
除了每次都输入index + needle.Length之外,是否有一种方法(现有的,或者可能易于扩展)可以让您确定子字符串的结束索引?
【问题讨论】:
-
你可以用 stringtosearch.Length() 做数学来确定。
-
结束不就是开始加长度吗?
-
@EricLippert 结尾是开头加上长度!这可能是一件非常微不足道的事情,但是解决这个问题让我想知道
C#是否包含一个返回结束而不是开始的方法(就像IndexOf那样)。我目前正在使用startValueFromIndexOf + string.Length执行此操作,只是想知道是否还有其他方法可用。 -
@codeCaster 很容易理解他想要做什么。也许不清楚为什么它很重要,但那是另一回事了。对 OP:不。没有,使用 startIdx 并添加长度很简单。无需额外的复杂性来进一步简化。
-
@CodeCaster 看起来不错!谢谢你。