Swift - 字符串

字符串由N个字符连接而成,用String类型表示,可以包含任意字符,在一对双引号之内。
初始化字符串
(1)字面量赋值

let str = "this is a string"

var tempString = "this is a string"

(2)通过创建String实例的方式初始化字符串

let anotherString = String()

上面的代码初始化了一个空字符串,那么判断字符串是否为空可以用isEmpty来判断,isEmpty是String的一个属性。

let anotherString = String()
if anotherString.isEmpty {
    print("这是个空字符串")
}

字符串的基本操作
我们经常用到的字符串的操作包括获取长度、遍历、拼接、插值、和格式字符串。下面分别介绍这几种操作。
(1)获取字符串长度
字符串的长度有两种形式:一种是字符串中字节的个数lengthOfBytes,另一种是直接计算字符的个数。

let string = "Hello World!"
let length1 = string.lengthOfBytes(using:String.Encoding.utf8)
let length1 = string.characters.count

如果是英文字符串,那么获取的字节个数和字符个数是一样的,因为每个英文字母是一个字节。如果是中文字符串,每个中文占用3个字符。字符串长度通常是字符的个数,所以推荐大家使用字符串的characters属性的count属性来计算字符串长度。

(2)字符串的遍历
字符串的遍历很简单,可以用for-in来遍历字符串中的每一个字符。

遍历字符串

(3)拼接字符串和字符
使用加法赋值运算符连接字符串

var varString = "jian"
varString += "shu"
print(varString)

使用加法运算符拼接字符串

let string1 = "Hello"
let string2 = "World"
var string3 = string1 + string2

使用append方法追加字符串
使用append方法可以将一个字符追加到一个可变字符串的尾部。

let string1 = "Hello"
let string2 = "World"
var string3 = string1 + string2
let c:Character = "!"
string3.append(c)

(4)字符串插值

let multiplier = 3
let message = "\(multiplier)诚意2.5等于\(Double(multiplier)*2.5)"

(5)格式字符串format

let hour = 3
let minute = 4
let seconds = 9
let dateString1 = String(format: "%02d:%02d:%02d", arguments:[hour, minute, seconds])
let dateString2 = String(format: "%02d:%02d:%02d",hour,minute,seconds)

(6)字符串截取
使用as关键字将string当做NSString类型的对象使用,然后调用substring(with range:NSRange)方法,进行截取。

let string = "Hello World!"
let subString = (string as NSString).substring(with:NSMakeRange(1,5))

(7)字符串比较
使用“==”或者“!=”判断两个字符串是否相同

let emptyStr1 = ""
let emptyStr2 = String()
if emptyStr1 == emptyStr2 {
    print("相同")
} else {
    print("不相同")
}

比较字符串的前缀或后缀
使用hasPrefix和hasSuffix两个方法用来检查字符串是否拥有特定的前缀和后缀。

let docFolder = ["java.docx", "swift.docx", "miao.png","OC.docx"]
var docCount = 0
for doc in docFolder {
    if doc.hasSuffix(".docx") {
        docCount += 1
    }
}
print(docCount)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,701评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,649评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,037评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,994评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,018评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,796评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,481评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,370评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,868评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,014评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,153评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,832评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,494评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,039评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,156评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,437评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,131评论 2 356

推荐阅读更多精彩内容

  • 一个字符串 是一系列字符的集合,例如hello, world和albatross。Swift的字符串是String...
    BoomLee阅读 2,401评论 0 3
  • String是例如"hello, world","albatross"这样的有序的Character(字符)类型的...
    穷人家的孩纸阅读 852评论 2 1
  • 字符 在Swift中,字符是字符串的基本组成单位,隶属于Character类型。字符可以是一个字母、数字、汉字或者...
    阿凡提说AI阅读 944评论 0 0
  • 字符串 *使用三引号创建多段字符串,必须换行,中间的引号不需要转移(Swift 4.0) 字符 用Characte...
    chengfengios阅读 2,501评论 0 5
  • Swift 字符串是一系列字符的集合。例如 "Hello, World!" 这样的有序的字符类型的值的集合,它的数...
    零度_不结冰阅读 229评论 0 0