为了账号安全,请及时绑定邮箱和手机立即绑定

使用Swift的字符串中子字符串的索引

使用Swift的字符串中子字符串的索引

慕妹3242003 2019-07-24 20:16:02
使用Swift的字符串中子字符串的索引我习惯在JavaScript中这样做:var domains = "abcde".substring(0, "abcde".indexOf("cd")) // Returns "ab"Swift没有这个功能,如何做类似的事情?
查看完整描述

3 回答

?
12345678_0001

TA贡献1802条经验 获得超5个赞

测试Swift 4.2 / 4.1 / 4.0 / 3.0

使用String[Range<String.Index>]下标,您可以获得子字符串。您需要启动索引和最后一个索引来创建范围,您可以按照以下方式执行此操作

let str = "abcde"if let range = str.range(of: "cd") {
  let substring = str[..<range.lowerBound] // or str[str.startIndex..<range.lowerBound]  print(substring)  // Prints ab}else {
  print("String not present")}

如果没有为此运算符定义起始索引..<,则采用起始索引。您也可以使用str[str.startIndex..<range.lowerBound]而不是str[..<range.lowerBound]


查看完整回答
反对 回复 2019-07-24
?
慕标琳琳

TA贡献1830条经验 获得超9个赞

在Swift 4中:

获取字符串中的字符索引:

let str = "abcdefghabcd"

if let index = str.index(of: "b") {

   print(index) // Index(_compoundOffset: 4, _cache: Swift.String.Index._Cache.character(1))

}

使用Swift 4从String创建SubString(前缀和后缀):

let str : String = "ilike"

for i in 0...str.count {

    let index = str.index(str.startIndex, offsetBy: i) // String.Index

    let prefix = str[..<index] // String.SubSequence

    let suffix = str[index...] // String.SubSequence

    print("prefix \(prefix), suffix : \(suffix)")

}

产量

prefix , suffix : ilike

prefix i, suffix : like

prefix il, suffix : ike

prefix ili, suffix : ke

prefix ilik, suffix : e

prefix ilike, suffix : 

如果要生成2个索引之间的子字符串,请使用:

let substring1 = string[startIndex...endIndex] // including endIndex

let subString2 = string[startIndex..<endIndex] // excluding endIndex


查看完整回答
反对 回复 2019-07-24
  • 3 回答
  • 0 关注
  • 954 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信