有没有一种更快的方法来检查特定索引中的char数组的子序列是否等于字符串的子序列?
bool Matches (Char[] cs, int i, string s)
{
return cs.Skip(i).Take(s.Length).SequenceEqual(s);
}
假定
cs
和s
永远都不是null
。与运行时一样快。
还可以在不创建字符串新实例的情况下完成吗?由于两者都可以视为char数组。
我希望能遵循C's strncmp 的要求
最佳答案
只需使用一个简单的for
循环。旨在消除s
的边界检查。
bool Matches (char[] chars, int offset, string s)
{
if(offset < 0)
throw new ArgumentOutOfRangeException("offset");
if(chars.Length - offset < s.Length)
throw new ArgumentException();
for(int i = 0; i < s.Length; i++)
{
if(chars[offset + i] != s[i])
return false;
}
return true;
}
关于c# - Char []的子序列是否等于String的内容?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28795443/