从特定范围内的子字符串中获取字符串

Get String from Substring at a particular range

我想编写一个函数,检查一个字符串的最后 3 个字符是否是另一个字符串的一部分,如果是,我只是 return 真,否则假。

示例:-

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 个字符。

任何人都可以提出任何建议吗?

您可以使用 range(of:) 和适当的选项:

  • .caseInsensitive 用于不区分大小写的搜索,
  • .backwards从字符串末尾开始搜索,
  • .anchored 将搜索限制在源字符串的末尾。
func checkSubstring(str1:String, str2:String) -> Bool {
    return str2.range(of: str1, options: [.caseInsensitive, .backwards, .anchored]) != nil
}

示例:

print(checkSubstring(str1: "abc", str2: "HiaBC")) // true
print(checkSubstring(str1: "ab", str2: "HiaBC")) // false

suffix(3) 只考虑最后三个字符和 caseInsensitiveCompare 这是不言自明的。

func checkSubstring(str1: String, str2: String) -> Bool {
    return str2.suffix(3).caseInsensitiveCompare(str1) == .orderedSame
}