Swift 从特定范围的子字符串获取字符串
我想写一个函数,检查字符串的最后3个字符是否是另一个字符串的一部分,如果是,我只返回true,否则返回false 例如:-Swift 从特定范围的子字符串获取字符串,swift,string,substring,Swift,String,Substring,我想写一个函数,检查字符串的最后3个字符是否是另一个字符串的一部分,如果是,我只返回true,否则返回false 例如:- let str1 = "abc" let str2 = "HiaBC" 我想在这里检查的是str1是否存在于str2的最后几个字符中,而不考虑大小写敏感性 我试过了 str2.contains("HI") // returned true as abc existed, should have returned
let str1 = "abc"
let str2 = "HiaBC"
我想在这里检查的是str1是否存在于str2的最后几个字符中,而不考虑大小写敏感性
我试过了
str2.contains("HI") // returned true as abc existed, should have returned false as it was not in the last 3 characters of the string.
func checkSubstring(str1:String, str2:String) -> Bool {
if str2.contains(str1) {
return true
}
return false
}
我想要的是以某种方式应用一些范围,并检查最后3个字符是否存在于子字符串中
任何人都可以提出任何建议?您可以使用范围(of:)
和适当的选项:
用于不区分大小写的搜索不区分大小写
从字符串末尾开始搜索,然后.backwards
将搜索限制在源字符串的末尾.archored
print(checkSubstring(str1: "abc", str2: "HiaBC")) // true
print(checkSubstring(str1: "ab", str2: "HiaBC")) // false
您可以使用带有适当选项的范围(of:)
:
用于不区分大小写的搜索不区分大小写
从字符串末尾开始搜索,然后.backwards
将搜索限制在源字符串的末尾.archored
print(checkSubstring(str1: "abc", str2: "HiaBC")) // true
print(checkSubstring(str1: "ab", str2: "HiaBC")) // false
<> > <代码>后缀(3)< /代码>只考虑最后三个字符和func checkSubstring(str1: String, str2: String) -> Bool {
return str2.suffix(3).caseInsensitiveCompare(str1) == .orderedSame
}
<> > <代码>后缀(3)< /代码>只考虑最后三个字符和func checkSubstring(str1: String, str2: String) -> Bool {
return str2.suffix(3).caseInsensitiveCompare(str1) == .orderedSame
}
谢谢你的ANS,它的意思是“VADANE”,这说明基础是要导入的。谢谢你的ANS,它的工作是“VADANE”,只是一个注释,它要求基础被导入。只是注意到这需要基础被导入。.caseInsensitiveCompare(“ss”)=.orderedSame也会返回
true
——可能是因为“ß”.uppercased()
和“ss.uppercased()
都等于“ss”。这可能是原因,但另一方面,VADEN的代码似乎适用于这种特殊情况:“@ CISTICK:这是他使用<代码>后缀()/Cuffe的副作用。只需注意,这是需要导入的基础。而且,这似乎给像“A”和“ASSE”这样的拐角情况提供了假阳性。==.orderedSame也返回true
——可能是因为“ß”.uppercased()
和“ss”。uppercased()
等于“ss”。这可能是原因,但另一方面,瓦迪安的代码似乎适用于这种特殊情况:)@Cristik:这更多的是他使用后缀的副作用。