从OC到Swift(3)- String和NSString

String

  • Swift的字符串类型String,跟OC的NSString,在API设计上还是有较大差异
// 空字符串
var emptyStr1 = ""
var emptyStr2 = String()
var str: String = "1"
// 拼接,jack_rose
str.append("_2")
// 重载运算符 +
str = str + "_3"
// 重载运算符 +=
str += "_4"
// \() 插值
str = "\(str)_5"
// 长度,9, 1_2_3_4_5
print(str.count)
var str = "123456"
print(str.hasPreifx("123")) // true
print(str.hasSuffix("456")) // true
  • String的插入
var str = "1_2"
// 1_2_
str.insert("_", at: str.endIndex)
// 1_2_3_4
str.insert(contentsOf: "3_4", at: str.endIndex)
// 1666_2_3_4
str.insert(contentsOf: "666", at:str.Index(afer: str.startIndex))
// 1666_2_3_8884
str.insert(contentsOf: "888", at:str.Index(afer: str.endIndex))
// 1666hello_2_3_8884
str.insert(contentsOf: "hello", at:str.Index(str.startIndex, offsetBy: 4))
  • String的删除
// 666hello_2_3_8884
str.remove(at: str.firstIndex(of: "1")!)
// hello_2_3_8884
str.removeAll { $@ == "6"}
var range = str.index(str.endIndex, offsetBy: -4)..<str.index(before: str.endIndex)
// hello_2_3_4
str removeSubrange(range)

Substring

  • String可以通过下标、prefix、suffix等截取子串,子串类型不是String,而是Substring
var str = "1_2_3_4_5"
// 1_2
var substr1 = str.preifx(3)
// 4_5
var substr2 = str.suffix(3)
// 1_2
var range = str.startIndex..<str.index(str.startIndex, offsetBy: 3)
var substr3 = str[range]

// 最初的string,1_2_3_4_5
print(substr3.base)

// Substring -> String
var str2 = String(substr3)
  • Substring和它的base,共享字符串数据
  • Substring发生修改或者转为String时,会重新分配薪的内存存储字符串数据
    在这里插入图片描述

String与Character

for c in "jack" { // c是Character 类型
    print(c)
}
var str = "jack"
// c是Character 类型
var c = str[str.startIndex]

String相关的协议

  • BidirectionalCollection 协议包含的部分内容
  1. startIndex、endIndex属性、index方法
  2. String、Array 都遵守了这个协议
  • RangeReplaceableCollection协议包含的部分内容
  1. append、insert、remove 方法
  2. String、Array 都遵守了这个协议
  • Dictionary、Set 也有实现上述协议中的声明的一些方法,只是并没有遵守上述协议

多行String

在这里插入图片描述

String与NSString

  • String与NSStrjng之间可以随时随时桥接转换
  • String不能桥接转换成NSMutableString
  • 如果你觉得String的API过于复杂难用,可以考虑将String转为NSString
var str1: String = "jack"
var str2: NSString = "rose"

var str3 = str1 as NSString
var str4 = str2 as String

var str5 = str3.substring(with: NSRange(location: 0, length: 2))
print(str5)
  • 比较字符串内容是否等价
  • String使用==运算符
  • NSString使用isEqual方法,也可以使用==运算符(本质还是调用了isEqual方法)

Swift、OC桥接转换表

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值