首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Swift中检查字符串以(前缀)开头或以(后缀)结尾

如何在Swift中检查字符串以(前缀)开头或以(后缀)结尾
EN

Stack Overflow用户
提问于 2015-10-06 18:18:04
回答 2查看 67K关注 0票数 107

我正在尝试测试Swift字符串是以某个值开始还是以某个值结束。这些方法不存在:

代码语言:javascript
复制
var str = "Hello, playground"
str.startsWith("Hello") // error
str.endsWith("ground") // error

我还想获得前缀和后缀字符串。我可以找到一个子字符串,答案是herehere,但是范围在Swift中太麻烦了。

有没有更简单的方法呢?

(我在阅读时偶然发现了答案,因为我的搜索词没有出现SO的答案,所以我在这里添加了我的问答。)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-06 18:18:04

针对Swift 4更新

检查字符串的开头和结尾

可以使用hasPrefix(_:)hasSuffix(_:)方法来测试与另一个字符串的相等性。

代码语言:javascript
复制
let str = "Hello, playground"

if str.hasPrefix("Hello") { // true
    print("Prefix exists")
}

if str.hasSuffix("ground") { // true
    print("Suffix exists")
}

获取实际的前缀和后缀子字符串

为了获得实际的前缀或后缀子字符串,您可以使用以下方法之一。我推荐第一种方法,因为它很简单。所有方法都使用str作为

代码语言:javascript
复制
let str = "Hello, playground"

方法1:(推荐) prefix(Int) suffix(Int)

代码语言:javascript
复制
let prefix = String(str.prefix(5)) // Hello
let suffix = String(str.suffix(6)) // ground

在我看来,这是更好的方法。与下面的方法2和3不同,如果索引超出界限,此方法不会崩溃。它将只返回字符串中的所有字符。

代码语言:javascript
复制
let prefix = String(str.prefix(225)) // Hello, playground
let suffix = String(str.suffix(623)) // Hello, playground

当然,有时崩溃是好的,因为它们让你知道你的代码有问题。因此,也可以考虑下面的第二种方法。如果索引超出范围,它将抛出错误。

方法2:prefix(upto:) suffix(from:)

Swift字符串索引很棘手,因为它们必须考虑特殊字符(如表情符号)。但是,一旦获得索引,就很容易获得前缀或后缀。(请参阅String.Index上的my other answer。)

代码语言:javascript
复制
let prefixIndex = str.index(str.startIndex, offsetBy: 5)
let prefix = String(str.prefix(upTo: prefixIndex)) // Hello

let suffixIndex = str.index(str.endIndex, offsetBy: -6)
let suffix = String(str.suffix(from: suffixIndex)) // ground

如果您想防止越界,可以使用limitedBy (同样,请参阅this answer)创建索引。

方法3:下标

因为String是一个集合,所以您可以使用下标来获取前缀和后缀。

代码语言:javascript
复制
let prefixIndex = str.index(str.startIndex, offsetBy: 5)
let prefix = String(str[..<prefixIndex]) // Hello

let suffixIndex = str.index(str.endIndex, offsetBy: -6)
let suffix = String(str[suffixIndex...]) // ground

进一步阅读

票数 217
EN

Stack Overflow用户

发布于 2015-10-06 18:28:30

字符串前缀和后缀相等要检查字符串是否具有特定的字符串前缀或后缀,请调用该字符串的hasPrefix(:)和hasSuffix(:)方法,这两个方法都采用

类型的单个参数并返回布尔值。

Apple Doc

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32967445

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档