ent*_*heh 7 c# string compare substring
例如,我可能有字符串"Hello world!",我想检查从位置6(从0开始)开始的子字符串是否为"world"- 在这种情况下为真.
像"Hello world!".Substring(6).StartsWith("world", StringComparison.Ordinal)它会做的事情,但它涉及堆分配,这对于这样的事情应该是不必要的.
(在我的情况下,如果从位置6开始的字符串太短而无法进行比较,我不想要一个边界错误 - 我只是想要假.但是,这很容易编码,所以提供边界错误的解决方案也是欢迎.)
在Java中,'regionMatches'可以用来实现这种效果(带有bounds错误),但我找不到C#中的等价物.
只是为了抢先-显然Contains并IndexOf是不好的解决方案,因为他们做不必要的搜索.(你知道有人会发布这个!)
如果所有其他方法都失败了,我可以快速编写自己的函数 - 主要是我想知道是否有一个我错过的内置函数.
das*_*ght 14
显然
Contains和IndexOf是坏的解决方案,因为他们做不必要的搜索
实际上,这不是真的:有一个超载IndexOf让你可以控制在搜索比赛中应该走多远.如果你告诉它留在一个特定的索引,那么它将完全符合你想要的目标.
这是IndexOf您可以使用的三参数重载.传递count参数的目标长度将阻止IndexOf考虑任何其他位置:
var big = "Hello world!";
var small = "world";
if (big.IndexOf(small, 6, small.Length) == 6) {
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3915 次 |
| 最近记录: |