首页 > 解决方案 > “包括?” 方法与作为数组元素和字符串传递的相同字符串的工作方式不同

问题描述

谁能解释为什么当我尝试通过将文本作为数组元素和整个字符串传递来检查文本是否包含字符串时,会得到不同的结果?

bullets[30]
#=> "eines Zahnes), da es zu einer verstärkten Blutungsneigung kommen kann; Der behandelnde Arzt sollte über die Einnahme des Medikamentes informiert werden. "

desc.include?(bullets[30])
#=> false

desc.include?("eines Zahnes), da es zu einer verstärkten Blutungsneigung kommen kann; Der behandelnde Arzt sollte über die Einnahme des Medikamentes informiert werden. ")
#=> true

bullets[30].class
#=> String

标签: ruby

解决方案


谁能解释为什么当我尝试通过将文本作为数组元素和整个字符串传递来检查文本是否包含字符串时,会得到不同的结果?

唯一可能的解释是两个字符串不相等。

  • 它们可以有不同的编码(例如,一种是 UTF-8,一种是 ISO8859-15)。
  • 它们可以有不同的 Unicode 规范化,例如ä,一个字符串中的一个字符串可以是带有分音符号的U+00E4拉丁小写字母 a,另一个使用U+0061拉丁小写字母 aU+0308组合字符分音符
  • 其中一个字符串可能具有 Unicode 字节顺序标记。
  • 其中一个字符串可能有额外的不可见空格。
  • 其中一个字符串可能有额外的不可打印字符。
  • 字符串可以有不同的空格,例如一个字符串有一个正常的空格,另一个有一个不间断的空格。

推荐阅读