是否可以检查一个字符串是否包含一个具有区域设置支持的子字符串?'Ábc'.contains('A')
应该为true。
JavaScript现在有string.prototype.localeCompare()用于字符串比较,并支持本地化,但我看不到对应的localeContains()
。
是否可以检查一个字符串是否包含一个具有区域设置支持的子字符串?'Ábc'.contains('A')
应该为true。
JavaScript现在有string.prototype.localeCompare()用于字符串比较,并支持本地化,但我看不到对应的localeContains()
。
6条答案
按热度按时间polkgigr1#
你可以这样做:
localCompare上的文档。灵敏度
base
表示:“base”:只有碱基字母不同的字符串比较为不相等。例如:
a ≠ b
、a = á
、a = A
。8ehkhllq2#
contains()有一个更快的替代方法,可以对字符串进行locale检查
看起来去掉变音符号,然后在本地比较字符串要快得多:在我的架构上,比@chickens或@dag0310解决方案快了近10倍,请检查您的here。如果检查空字符串是否与
String.includes
一致,则返回true。**NFKD
NFKD修饰符将所有precomposed characters分解为它们的基本字符和组合标记,随后通过
replace
调用将其删除。重要提示
这对某些解决方案不起作用,如
"Straße".contains("SS")
,这取决于您是否想将ß
视为SS
的替代品。要了解更多信息,请查看on MDN提到的规范和兼容性转换,其中还提到了NFKD以外的其他形式。感谢@LukasKalbertodt在评论中提到边缘情况。
ahy6op9u3#
如果你正在寻找一个以上的字符,这里是一个不是很有效,但工作的选择:
ix0qys7i4#
如果搜索的字符串不在主字符串的开头,则chickens的答案不起作用。
请使用此包:https://www.npmjs.com/package/locale-includes
为了使它更好地用作字符串原型函数:
dy2hfwbg5#
您可以规范化字符串并使用
string.includes
或尝试查找匹配的子字符串
或者你可以使用一个黑客使用
window.find
,它的工作原理 * 确切 *,如果你在页面上搜索与Ctrl-Fijnw1ujt6#
这段代码提供了对区域设置敏感的子字符串检查,如下所示: