博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Swift新手教程3-字符串String
阅读量:4326 次
发布时间:2019-06-06

本文共 3012 字,大约阅读时间需要 10 分钟。

原创blog,转载请注明出处

String

在swfit中,String兼容Unicode的方式。用法和C语言类似。
注意
 
在Cocoa和Cocoa touch中,Swift的String,和Foundation中的NSString是兼容的,全部NSString额API都能够调用String类型
字符串常量
1、含转义字符:比如\n,\t等
2、单字节Unicode标量,\xmm
3、双字节Unicode标量,\ummmm
4、四字节Unicode标量,\Ummmmmmmm
这里的m为十六进制数

let myname = "Hwc"//hwclet myname = "\"Hwc\""//"hwc"
初始化
var emptyString = "" //空字符串var sameEmptyString = String()//空字符串var notEmptyString = "first"
值传递
在swfit中。对字符串进行赋值操作或者作为參数传递给函数的时候是值传递。也就是说传递的是副本,而不是本身的引用。

这点和Cocoa的NSString不同

字符串经常使用操作
1 isEmpty属性
推断是否为空

let str = ""if str.isEmpty{	println("This is empty")}
2 startIndex endIndex
 countElements
返回最后一个字符的index,返回值类型String.Index
let str = "Hello world"println(str.endIndex)//11

println(countElements(str))

3 toInt()
返回Int?即,假设能转换成功,则返回值是Int,否则为nil
var str = "123"var result = str.toInt()if result != nil{	println("Success")}

4 子字符串 

subStringFromIndex(index:String.index)  subStringToIndex(index:String.index)  subStringWithRange(aRange:Range())
这里要使用到一个advance函数: advance(start:T,n:Distance)
就是相对于T的偏移Distance距离。由于临时还找不到int转String.index合适的API
stackoverflow上找了些资料,似乎swift的API还有非常多不完好的地方
在最后。我会讲到怎样扩展一个类,然后给出子字符串的样例
var str = "hello world"str.substringFromIndex(advance(str.startIndex,6))//hellostr.substringToIndex(advance(str.startIndex,5)) //worldstr.substringWithRange(Range(start:advance(str.startIndex,2),end:advance(str.startIndex,8)))//llo wo
5 字符串拼接

非常简答,用加号+ 或者字符串插值

var str1 = "hello"var str2 = "world"var str = str1 + str2
var str2 = "\(str1) hwc and the \(str2)" //hello hwc and the world
6 大写和小写转换
str.uppercaseString //HELLO WORLD str.lowercaseString //hello world
7  前缀后缀 相等
Bool hasPrefix(prefix:String)
Bool hasSuffix(suffix:String)

var str = "hello hwc"str.hasPrefix("hello") //truestr.hasSuffix("123") //false
var str1 = "jack"
if  str == str1{ println("Equal")}
8 处理子字符串
Void insert(newElememt:Character,atIndex:String.index) //插入字符Void removeAtIndex(i:String.Index) //删除字符Void removeRange(subRange:Range
)//删除一个区间Void replaceRange(subRange:Range
,with:C)
9 格式化合并字符串
String stringByAppendingFormat(format:String,arguments:CVarArgType...)
var str = "hello world"str.stringByAppendingFormat("%d",4) //hello world4

10 utf8 utf16属性

str.utf8 //返回str的utf8表示的集合

str.utf16 //返回str的utf17表示的集合

扩展String

通过扩展swifr的类,能够提供新的方法而不改变原有的类。下面为几个扩展函数,分别扩展了

通过下标获得子字符串

以及substring的三个重载

extension String {    subscript (r: Range
) -> String {        get {            let subStart = advance(self.startIndex, r.startIndex, self.endIndex)            let subEnd = advance(subStart, r.endIndex - r.startIndex, self.endIndex)            return self.substringWithRange(Range(start: subStart, end: subEnd))        }    }    func substring(from: Int) -> String {        let end = countElements(self)        return self[from..
String {        let end = from + length        return self[from..
String    {        return self[from..
在playground的右边输出能够看到

输出

hello

hello

world

 

转载于:https://www.cnblogs.com/mengfanrong/p/5129489.html

你可能感兴趣的文章
Centos 7 Mysql 最大连接数超了问题解决
查看>>
thymeleaf 自定义标签
查看>>
关于WordCount的作业
查看>>
C6748和音频ADC连接时候的TDM以及I2S格式问题
查看>>
UIView的layoutSubviews,initWithFrame,initWithCoder方法
查看>>
STM32+IAP方案 实现网络升级应用固件
查看>>
用74HC165读8个按键状态
查看>>
jpg转bmp(使用libjpeg)
查看>>
linear-gradient常用实现效果
查看>>
sql语言的一大类 DML 数据的操纵语言
查看>>
VMware黑屏解决方法
查看>>
JS中各种跳转解析
查看>>
JAVA 基础 / 第八课:面向对象 / JAVA类的方法与实例方法
查看>>
Ecust OJ
查看>>
P3384 【模板】树链剖分
查看>>
Thrift源码分析(二)-- 协议和编解码
查看>>
考勤系统之计算工作小时数
查看>>
4.1 分解条件式
查看>>
Equivalent Strings
查看>>
flume handler
查看>>