始终可以将两个字符串转换为相同的大小写.这将适用于某些情况:
let needle = "μτς";
let haystack = "ΜΤΣ";
let needle = needle.to_lowercase();
let haystack = haystack.to_lowercase();
for i in haystack.matches(&needle) {
println!("{:?}", i);
}
请参见str::to_ascii_lowercase
了解仅限ASCII的变体.
在其他情况下,regex crate might do enough case-folding(可能是Unicode)适合您:
use regex::RegexBuilder; // 1.4.3
fn main() {
let needle = "μτς";
let haystack = "ΜΤΣ";
let needle = RegexBuilder::new(needle)
.case_insensitive(true)
.build()
.expect("Invalid Regex");
for i in needle.find_iter(haystack) {
println!("{:?}", i);
}
}
然而,请记住,Rust的字符串最终是UTF-8.是的,你需要处理所有的UTF-8.这意味着 Select 大写或小写可能会改变结果.对requires that you know the language of the text字,同样只改大小写;这不是字节的固有属性.是的,你可以有包含表情符号和其他令人兴奋的东西的字符串beyond the Basic Multilingual Plane.
另见: