我遇到了一个错误,我无法将两个看起来“相同”的字符串匹配在一起。例如,以下两个字符串无法匹配: "sample" 和 "sample"。
为了复制这个问题,可以在Clojure中运行以下命令。
在经过一个小时沮丧的调试后,我发现第二个字符串开头有一个零宽度空格!通过一个退格键从这个特定示例中删除它是微不足道的。然而,我有一个字符串数据库需要匹配,似乎有多个字符串面临这个问题。我的问题是:有没有一种通用的方法可以在Clojure中修剪零宽度空格? 我尝试了一些方法:
为了复制这个问题,可以在Clojure中运行以下命令。
(= "sample" "sample") ; returns false
在经过一个小时沮丧的调试后,我发现第二个字符串开头有一个零宽度空格!通过一个退格键从这个特定示例中删除它是微不足道的。然而,我有一个字符串数据库需要匹配,似乎有多个字符串面临这个问题。我的问题是:有没有一种通用的方法可以在Clojure中修剪零宽度空格? 我尝试了一些方法:
(count (clojure.string/trim "abc")) ; returns 4
(count (clojure.string/replace "abc" #"\s" "")) ; returns 4
这个线程提供了一个使用正则表达式的解决方案,可以在此示例中起作用,即删除JavaScript字符串中的零宽度空格字符。
(count (clojure.string/replace "abc" #"[\u200B-\u200D\uFEFF]" "")) ; returns 3
然而,正如帖子本身所述,还有许多其他可能是不可见的ASCII字符。因此,我仍然感兴趣是否有一种更一般的方法,不依赖于列出所有可能的不可见Unicode符号。