4 字符串 Swift/Objective -C ——《Swift3.0从入门到出家》原创连载

4 字符串 Swift/Objective -C ——《Swift3.0从入门到出家》

4 字符串 Swift and Object-C


字符串由多个字符组成,使用 “” 引起的内容

swift语言中提供了两种字符串:可变字符串和不可变字符串
可变字符串:字符串的内容可以修改,字符串的长度可以修改,用var修饰
不可变字符串: 字符串的内容和长度都不能修改,用let修饰

Swift 和 Obiect-C之间的转换

用as 转换 [当前类型 as 想转换的类型]
var str: NSString = “I Love Object - C”

let str0 = str as String

创建空字符串

let str1: String = “”

let str1: String = String()

Object - C

var mutable = NSMutableString.init(capacity:0)// 可变字符串

创建赋初值的字符串

let str2 = “你好啊” //不可变字符串(常量字符串)

var str3 = String (“中国”) //可变字符串

Object -C

var str:NSString = NSString.init(format:”%@,%d”,“中国”,75)  

//不可变字符串

var mutable = NSMutableString.init(capacity:0)

不可变字符串转化为可变字符串

let str2 = NSMutableString.init(string: “不可变字符串”)

判断字符串是否为空

if str2.isEmpcase {
   print(“空值”)
   }

获取字符串中字符个数

str3.characters.count

遍历字符串

【Swift】

for i in str3.characters{

print(i)

}

【Object-C】

for i in  0..<str3.length{

NSLog(“%C”,str3.characterAtIndex(i))
} 

获取字符串中的指定字符

swift中获取字符串的索引/下标,类型是Index类型,不是Int类型

【1】获取字符串中的第一个字符

.startIndex

【2】获取字符串中最后一个字符

.endIndex.predecessor

【3】获取后一位字符

.successor

【4】获取前一位字符

.predecessor

【5】获取指定位置上的字符

.advanceBy()

添加字符/字符串

【1】追加字符

.append(Character)

例如:

var char: Character = “!”

str3.append(char)

【2】追加字符串

.appendContentOf()

+

Object-C

.appendString(追加的字符串)

例如:

str3.appendString(“I Love Swift”)
.appendFormat(“占位符”,追加的内容)

例如:

str3.appendFormat(“%@”,“I Love Swift”)

插入字符串内容

【1】插入字符

.insert(要添加的字符, atIndex:要添加的索引下标位置(index类型))

【2】插入字符串

.insertContentsOf(要添加的字符串,at:索引下标位置)

Object -C

.insertString(要添加的内容,atIndex: 索引)

`删除字符串内容

【1】删除指定位置的字符

.removeAtIndex()

【2】删除一定范围的字符

.removeRange(下标区间)

例如:

str3.removeRange(str3.startIndex)
str3.startIndex.advancedBy(5))

【3】删除所有字符

.removeAll

Object-C

.deleteCharactersInRange(NSRange.init(location: 索引值,length:长度))

从指定位置删除指定个数的字符

修改

.replaceRange(区间范围, with: 要修改的字符串)

.replaceCharacterInRange(NSRange.init(location: 索引值,length:长度),withString:”新的字符”)

修改指定索引的元素

修改出现在指定位置的多个字符串

.replaceOccurrencesOfString(“指定字符串”,withString:“想要修改成的字符串”, options:NSStringCompareOptions.AnchoredSearch,range: NSRange.init(location:起始位置,length:长度))

字符串的比较

Swift:区分大小写:

== != <= >=

比较的是字符的ASCII码值 a:97 A:65

例如:

let string1 = “hello”

let string2 = Hello”

if string1 == string2{

print(“相等”)

}

if string1 <= string2{

print(“左边的小于右边的”)

}

if string1 >= string2{

print(“左边的大于右边的 ”)

}

if string1 != string2{

print(“两个字符串不相等”)

}

Object-C 不区分大小写的方法:

if string1.compare(string2 ,options:NSStringCompareOption.CaseInsensitiveSearch) == NSComparisonResult.OrderSame{

print(“两个字符串相等”)

}

字符和数字之间的相互转换

【1】字符转数字

let ch = “A”

var value = ch.unicodeScalars.first!.value

Object-C

let numStr = NSString = “123”

let intNum = numStr.intValue

【2】数字转字符

let n = 1

var unicodes = UnicodeScalar.init(n)

let ch_tmp = Character.init(unicodes)

Object-C

let str =NSString.init(format:”%d”,100)

let str = NSString.init(format:输入格式,要转换的数字)

【3】字符转字符串

let n : Character = “i”

let m = String.init(format: %C,,i)

获取字符串的前后缀

【1】前缀 .hasPrefix()

let path = “www.baidu.com”

print(path.hasPrefix(“www”))

【2】后缀 .hasSuffix()

print(path.hasSuffix(“com”))

字符串查找

**查找子串在父串中出现的范围,范围是NSRange类型
**
NSRange是结构体,有两个属性:一个是location 代表的是字符串的位置

  一个是length 代表字符串的长度

let str:NSString  = “helloworld”

**【从前向后查找】:
**
.rangeOfString(要查找的子串)

例如:

let range1 = str.rangeOfString(“hello”)

【从后向前查找】:

.rangeOfString(要查找的子串,options:NSStringCompareOptions.BackwardSearch)

例如:

let range2 = str.rangOfString(“hello”,options : NSStringCompareOptions.BackwardSearch) 

输出格式为:


if range1.location != NSNotFount{

print(“找到了\(range.location)\(range.length)”)

}

else{

print(“没有找到‘)

}

大小写的转换

小写转大写

 .uppercaseString

大写转小写

.lowercaseSrting

字符串的提取

.substringToIndex //从索引为0的位置开始,提取到指定的索引的前一位为止

.substringFromIndex //从索引处开始,提取到整个字符串结束

.substringWithRange(NSRange.init(location: 索引值,length:要提取的长度))

例如:


var superStr :NSString = “Welcome to Beijing”

let sub1 = superStr.substringToIndex(4) //Welc

let sub2 = superStr.substringFromIndex(3) //come to Beijing

let sub3 = super.substringWithRange(NSRange.init(location:0, length: 5))

从文件中读取内容

try! NSString.init(contentsOfFile:文件地址, encoding: NSUFT8StringEncoding)

例如:

var path: String = “/Users/zhyunfe/Desktop/zhyunfe/字符串/猪之歌.txt”

let contents = try! NSString.init(contentsOfFile: path, encoding:NSUFT8StringEncoding)


拓展阅读

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

推荐阅读更多精彩内容