gpt4 book ai didi

string - Julia 中不区分大小写的字符串比较

转载 作者:行者123 更新时间:2023-12-04 14:56:11 32 4
gpt4 key购买 nike

我确定这有一个简单的答案,但是如何在 Julia 中比较两个字符串并忽略大小写?我已经破解了一个相当不雅的解决方案:

function case_insensitive_match{S<:AbstractString}(a::S,b::S)
lowercase(a) == lowercase(b)
end

一定会有更好的办法!

最佳答案

效率问题

您选择的方法确实适用于大多数设置。如果您正在寻找更有效的东西,您就不容易找到它。原因是大写字母和小写字母以不同的位编码存储。因此,在比较字符串中的字符时,并不是只有字符对象的某些大写字段可以忽略。幸运的是,大写字母和小写字母之间的位差异非常小,因此转换简单而高效。有关此背景的信息,请参阅此 SO 帖子:

How do uppercase and lowercase letters differ by only one bit?

精度问题

在大多数设置中,您拥有的方法将准确地工作。但是,如果您遇到诸如大写与小写希腊字母之类的字符,它可能会失败。为此,您最好使用 normalize函数(参见 docs 了解详细信息)与 casefold选项:

normalize("ad", casefold=true)

请参阅 Python 上下文中的这篇 SO 帖子,它解决了此处的相关问题,因此无需重复:

How do I do a case-insensitive string comparison?

由于它讨论的是 utf 编码的底层问题,因此它适用于 Julia 和 Python。

另请参阅此 Julia Github 讨论以获取更多背景信息和地点的特定示例 lowercase()可能失败:

https://github.com/JuliaLang/julia/issues/7848

关于string - Julia 中不区分大小写的字符串比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39399187/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com