c# - Char[] 的子序列是否等于字符串的内容?

标签 c#

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

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

假设 css 永远不会是 null

运行时更快。 我也可以在不创建字符串的新实例的情况下完成吗?因为两者都可以看作是字符数组。

我希望有类似 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[] 的子序列是否等于字符串的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28795443/

相关文章:

c# - 每次使用 C# 从 mysql 更新时,图表范围都会越来越小

c# - 创建 Cron 作业以在 x 小时后运行

c# - 在 C# 中使用 DirectoryInfo/FileInfo.MoveTo() 将文件或文件夹重命名为小写

c# - 计算在共享文件夹上运行的 .exe 的所有实例

c# - N-S 和 E-W 格式的纬度/经度正则表达式

c# - c# string 如何计算它自己的值?

c# - Sql中如何替换select语句中的列值?

c# - 强制关闭 TCP 客户端时服务器无法识别断开连接

c# - ASP.NET 核心 ToHtmlString

c# - 调用编译查询时如何修复 "System.InvalidOperationException: Invalid attempt to call Read when reader is closed"