为什么 String.IndexOf 和 String.Contains 在提供阿拉伯文本时不一致?

2023-11-27

我想知道我是否在 .NET Framework 中发现了错误,或者我是否不明白某些内容。 运行这段代码后:

var text = "مباركُ وبعض أكثر من نص";
var word = "مبارك";
bool exist = text.Contains(word);
int index = text.IndexOf(word);

结果是“exists = true”和“index = -1”

怎么会这样?


Contains对文化不敏感:

此方法执行序数(区分大小写且不区分区域性)比较。

IndexOf文化敏感:

此方法使用当前区域性执行单词(区分大小写和区域性)搜索。

这就是区别。如果你使用

int index = text.IndexOf(word, StringComparison.Ordinal);

那么你会得到一个索引 0 而不是 -1 (所以它与Contains).

没有文化敏感的超载Contains;我不清楚你是否可以使用IndexOf可靠地做到这一点,但是CompareInfo类给some更多的选择。 (我真的不太了解文化比较的细节,尤其是 RTL 文本。我只知道它很复杂!)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 String.IndexOf 和 String.Contains 在提供阿拉伯文本时不一致? 的相关文章

随机推荐

  • 将具有子数组的对象数组映射并减少为具有父 ID 的子数组

    我正在尝试获取像这样的一系列对象 id uniqueParentId1 children childProp1 test1 childProp2 test3 id uniqueParentId2 children childProp1 so
  • 在 Delphi 10.1 Berlin 中使用 VCL 样式时,TSaveDialog 的属性“ofOverwritePrompt”不起作用

    创建一个新的 VCL Forms 应用程序 在主窗体上添加一个 Tbutton 和一个 TSaveDialog 在 SaveDialog1 的属性中将 ofOverwritePrompt 设置为 True Use procedure TFo
  • 如何解密 AES-128 加密的 m3u8 视频文件?

    我尝试解密 AES 128 加密的 m3u8 视频文件 如下所示 m3u8 文件 EXTM3U EXT X MEDIA SEQUENCE 0 EXT X ALLOW CACHE NO EXT X VERSION 2 EXT X FAXS C
  • Node.js + Socket.io + Apache

    我正在寻找一种通过以下方式集成 Node js Socket io Apache 的方法 我希望 apache 继续提供 HTML JS 文件 我希望 node js 侦听端口 8080 上的连接 如下所示 var util require
  • Go 接口有哪些示例?

    I found 一篇有趣的博客文章关于围棋 我试图理解接口的概念 但我发现从博客文章中的代码片段来看很难做到这一点 而且几乎不可能语言规范 谁能指出一个工作程序中 Go 接口的简单示例 这是一个正在进行的学习练习 当然也是良好风格的一个糟糕
  • 从字符串列表中删除空字符串

    我想从 python 的字符串列表中删除所有空字符串 我的想法是这样的 while in str list str list remove 有没有更多的Pythonic方法来做到这一点 我会用filter str list filter N
  • Identity Core 的密码历史记录

    密码历史记录有默认实现吗 我正在尝试在我的项目中使用身份来实现该功能 因此我添加了包含密码哈希值的密码历史表 当用户更改密码时 usermanager 会生成密码的哈希值 var passwordHash userManager Passw
  • 如何签署 MSI?

    我的公司希望阻止客户安装我们的产品时出现的 UAC 弹出窗口 我们从 VeriSign VeriSign Class 3 Code Signing 2010 CA 购买了证书 我得到了一个 MyCompany cer 文件 我通过双击证书并
  • 如何将 sockaddr_in6::sin6_addr 字节顺序设置为网络字节顺序?

    我开发了一个网络应用程序并使用套接字 API 我想设置sockaddr in6结构的sin6 addr字节顺序 对于 16 位或 32 位变量 很简单 使用 htons 或 htonl IPv4 sockaddr in addr addr
  • OpenCV findFundamentalMat 非常不稳定且敏感

    我正在为我的大学开展一个项目 我们希望四轴飞行器能够用他的相机稳定自己 不幸的是 基本矩阵对特征点内的微小变化反应非常敏感 我稍后会给你例子 我认为由于 ocv 我的匹配已经工作得很好了 我正在使用 SURF 特征并将它们与 knn Met
  • 约束表达式无效

    下列代码示例与 GCC 12 2 和 MSVC 19 33 不同 它不能使用 Clang 15 或 Clang trunk 进行编译 嵌套required子句中的约束表达式是否无效 struct t constexpr auto b con
  • 使用 Rangy 保存其位置时,插入符号在 Firefox 中消失

    这种情况仅发生在 Firefox 中 重要提示 我正在保存插入符的位置rangy saveSelection 当点击内容可编辑div时 on keyup 将外部 html 元素 作为节点 添加到内容可编辑 div 时 我需要通过多种方式不断
  • Javascript 中的条形图:堆叠条形图 + 分组条形图

    我正在寻找一个 Javascript 解决方案 将分组和堆叠条形图与漂亮的图表混合在一起 例如由Protovis 例如 如果我想比较 Apple iPad iPhone 设备和 Android 设备上的下载量 我可能会这样做 请原谅我糟糕的
  • 解码或转义 \u00f0\u009f\u0091\u008d 为

    我们都知道 UTF 8 很难 我从 Facebook 导出消息 生成的 JSON 文件将所有非 ASCII 字符转义为 unicode 代码点 我正在寻找一种简单的方法来将这些 un icode 代码点转义为常规的旧 UTF 8 我也很想使
  • 在python中创建非阻塞套接字

    我试图了解非阻塞套接字是如何工作的 所以我用 python 编写了这个简单的服务器 import socket s socket socket socket AF INET socket SOCK STREAM s bind 127 0 0
  • C++中的指针和C#中的引用类型之间的区别

    在 C 中 指针是指向存储另一个变量的内存地址的指针 而在 C 中 引用在某种程度上是相同的 这两者有什么区别 在 C 中 引用类型在不再需要时将被自动垃圾回收
  • 激活器:Play Framework 2.3.x:运行与启动

    为什么这两个命令的行为不同 在生产模式下启动游戏和在开发模式下启动游戏不同吗 activator run Dconfig file myConfig conf works activator run Dconfig file myConfi
  • Metastore 中分区但 HDFS 中不存在路径

    我们的摄取过程存在问题 这会导致分区被添加到 Hive 中的表中 但 HDFS 中的路径实际上并不存在 我们已经解决了这个问题 但仍然存在这些坏分区 当使用 Tez 查询这些表时 我们收到 FileNotFound 异常 指向 HDFS 中
  • 将ios 5模拟器安装到xcode 5.1?

    我目前在 Mac 10 8 5 上使用 xcode 5 1 但我无法在这个 xcode 中安装 ios 模拟器 有人告诉我如何安装ios 5模拟器吗 伙计 这个really今天 当我从 Xcode 5 0 升级到 Xcode 5 1 并发现
  • 为什么 String.IndexOf 和 String.Contains 在提供阿拉伯文本时不一致?

    我想知道我是否在 NET Framework 中发现了错误 或者我是否不明白某些内容 运行这段代码后 var text var word bool exist text Contains word int index text IndexO