有没有一种更快的方法来检查特定索引中的char数组的子序列是否等于字符串的子序列?

bool Matches (Char[] cs, int i, string s)
{
    return cs.Skip(i).Take(s.Length).SequenceEqual(s);
}


假定css永远都不是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/

10-13 05:27