Swift3.0学习笔记-String and Characters

https://developer.apple.com/library/prerelease/content/documentation/Swift/Conceptual/Swift_Programming_Language/StringsAndCharacters.html#//apple_ref/doc/uid/TP40014097-CH7-ID285

         备注:Swift的字符串、字符跟Java的String、char功能、用法基本一样。

         字符串是由一系列字符组成的, 例如“hello, world”和"albatross"。在Swift语言中,使用String作为字符串类型。 Swift提供了多种操作String内容的方法。

使得它可以很容易地创建用于显示、存储和打印的自定义字符串值。

         在Swifit语言中,String和Character类型的字符使用Unicode编码,并且提供了使用方便的API读写这些字符。跟C语言类似, Swift的字符串创建和操作的语法很简洁、可读性高。字符串拼接可以使用+运算符, 可变字符串和不可变字符串分别对应变量(使用var关键字)、常量(使用let关键字),    是Swift的通常用法。字符串插值可以插入常量、变量、文本或其它String,所以Swift可以很容易的创建用于显示、存储和打印自定义字符串值。 String使用Unicode编码, 并提供API支持操作这些Unicode字符。

备注: String可以直接调用Object-C NSString的方法, 而且不需要做类型强制转换。


字符串常量:

        跟Java/C/OC的语法一样, 由双引号和中间的字符序列组成,  语法格式如: "abc"

 let someString = "Some string literal value"      //定义String常量someString

 var someStr: String

someStr = "str"            //someStr是String变量


初始化空字符串:

 分为2种实现语法, 二者的功能一致。即:

var emptyString = ""                    // 第一种方法,emptyString是String类型的空字符串
var anotherEmptyString = String()  // 第二种方法


如何判断String是否为空呢?  Swift提供了属性isEmpty, 注意是属性!!!

if emptyString.isEmpty {
    print("空串")
}

备注:在Java里是判断String类的length()方法是否大于零。


字符串拼接: 跟Java/C/Object-C的语法一样使用+, 注意一定是对变量进行字符串拼接, 常量字符串不能拼接!!!

var variableString = "Horse"
variableString += " and carriage"
// variableString 等于 "Horse and carriage"
 
let constantString = "Highlander"
constantString += " and another Highlander"   //错误!!! Xcode会报错,常量是不能修改的


String是传值、不传引用, 跟Java里的String是一样的。当创建一个新的String变量, 并将它作为某个函数的参数时, 函数的形参是新创建一个String的拷贝。


操作String里的字符:

       可以使用 for in 循环遍历String中的字符。

for character in "Dog!".characters {
    print(character)  
}

输出:

D

o

g

!

//说明: "Dog!"是String类对象, characters是String类的成员变量, 类型为Character数组, 变量character是Character类型。

跟Java语法一样, 可以使用字符数组创建一个String对象。

l let catCharacters: [Character] = ["C", "a", "t", "!"] //catCharacters是字符数组,注意是双引号!!!类似于Java的char[] catCharacters = {'C','a','t','!'}; Java里的字符是单引号。
let catString = String(catCharacters) //使用字符数组初始化String对象
print(catString) //输出 cat!


S 与Java语法一样, String可以跟String拼接, 或者String跟Character拼接。

l let string1 = "hello"
let string2 = " there"
var welcome = string1 + string2 //两个字符串拼接, 得到 hello there


l let exclamationMark: Character = "!" //字符类型,注意用的是双引号! 而在Java里字符是用单引号
welcome.append(exclamationMark) //类似于Java StringBuilder/StringBuffer的append方法,在尾部追加。得到 hello there!



  字符串插值: 在字符串任意位置插入数字或者字符,在Swift中的语法是\(param) (功能类似于Java String类的format方法)。例如:

l let multiplier = 3
let message = "\(multiplier) times 2.5 is \(Double(multiplier) * 2.5)"

、//变量message 等于 "3 times 2.5 is 7.5"

说明:multiplier是整型Int, 与浮点数2.5相乘时要先转换成浮点数, 而在Java里这时不需要做类型转换。注意Double是个类, Double(multiplier)是Double类的一个构造函数。



  Swift的特殊字符: 跟Java完全一样。 \0表示空字符, \\表示转义的反斜杠\, \t表示tab键,\n表示换行符,\r表示回车,\"表示双引号",\'表示单引号’。



读取字符串中的字符:

startIndex属性表示起始位置、endIndex属性表示末尾位置, String类的index(before:)和index(after:)方法通过下标得到字符串中的字符。下面通过示例说明具体用法:

l let greeting = "Guten Tag!"
greeting[greeting.startIndex] //greeting是String类型,可以当作数组使用,startIndex等于0。类似于Java String的charAt方法。
// G
greeting[greeting.index(before: greeting.endIndex)] //表示取末尾前面一个字符, 注意末尾字符是\0
// !
greeting[greeting.index(after: greeting.startIndex)] //startIndex是G,取startIndex后面一个字符
// u
let index = greeting.index(greeting.startIndex, offsetBy: 7) //startIndex是G,向后数7个是a
greeting[index]
// a


注意: 下标越界时会报错!!! 同Java的IndexOutofBoundException

g greeting[greeting.endIndex] // 错误
greeting.index(after: greeting.endIndex) // 错误


字符串比较: Swift使用==判断2个String对象是否相同, 跟Java不同。 在Java中2个String中间是==的意思是两个String对象是否指向同一个地址,ava使用String类的equals或equalsIgnoreCase方法比较值是否相等)

let quotation = "We're a lot alike, you and I."
let sameQuotation = "We're a lot alike, you and I."
if quotation == sameQuotation {
    print("These two strings are considered equal")
}
// 打印"These two strings are considered equal"



小结: Swifit跟Java在字符串的区分有

1 1、判断2个String对象是否相等, Swift使用==操作符。

2、Swift的String提供新的方法查询下标对应的字符。

3、Swift可以直接使用String的属性, 而Java是通过方法才能拿到属性值。

4、Swift的String对应Java的String, Swift的Character对应Java的char。









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值