Swift 5: 字符串(swift与OC混编)

1: 简介

(1):OC中字符串分为两种:可变字符串、不可变字符串。

(2):swift中的字符串String是结构体类型,所以我们的操作都是对结构体的实例值就行操作。

(3):OC中的字符串NSString是类类型,我们做的操作都是对对象进行操作。

(4)可变字符串是不可变字符串的子类,所以可变字符串继承不可变,可以使用不可变字符串的所有方法

2:不可变字符串方法

//1.创建空字符串

var str1: NSString = ""
var str2: NSString = NSString()

//2.创建简单字符串对象

var str3: NSString = "helloworld"

//3.使用格式化的方式创建字符串

//占位符:%d表示Int %@表示字符串 %f表示Float类型 %lf表示Double类型 %C表示字符型(只对OC字符串的字符有效)

var str4: NSString = NSString.init(format: "%@,%d,%.2lf", "中国",75,1234.3456789)
print(str4)
NSLog("%@", str4)

let string = String.init(format: "%2d:%2d:%2d", 12,23,56)
print(string)

//4.遍历字符串对象

//.length获取NSString字符串的字符个数

for i in 0..<str4.length {
    
    //通过下标获取字符串中的字符
    NSLog("%C", str4.characterAtIndex(i))
    //print("\(str4.characterAtIndex(i))")
}

//5.字符串的比较 (建议使用swift语言中字符串的比较方法)

var string1: NSString = "Hello"
var string2: NSString = "hello"

//swift中字符串的比较 == >= <= != 
if (string1 as String) <= (string2 as String) {
    print("左边小于右边")
}

//OC中字符串的比较
if !string1.isEqualToString(string2 as String) {
    print("不相等")
}
//OC中比较字符串的大小 区分大小
if string1.compare(string2 as String) == NSComparisonResult.OrderedAscending {
    print("左边小于右边")
}

//6.不区分大小写 比较字符串的大小

if string1.compare(string2 as String, options: NSStringCompareOptions.CaseInsensitiveSearch) == NSComparisonResult.OrderedSame {
    print("两个字符串相等")
}

//7.字符串查找 查找子串在父串中出现的范围 NSRange类型

//NSRange是结构体 有两个属性location位置 length子串的字符个数
let str_new: NSString = "helloworldhellow"

//从前向后查找
let range1 = str_new.rangeOfString("hello")
if range1.location != NSNotFound {
    print("找到了子串\(range1.location),\(range1.length)")
}

//从后向前查找
let range2 = str_new.rangeOfString("hello", options: NSStringCompareOptions.BackwardsSearch)
print(range2.location,range2.length)

//8.字符串与数字之间的转换 --- swift中也具有该方法 只是返回值是可选类型(! 强制解析)

let numStr: NSString = "123"
let int_num = numStr.intValue
print(int_num) //转换成什么类型就调用 --- 类型Value

let str_str = NSString.init(format: "%d", 100)
print(str_str)

//9.大小写转换

var lastStr: NSString = "hello"
print(lastStr.uppercaseString)

lastStr = "HELLO"
print(lastStr.lowercaseString)

//10.字符串的提取

===========重点==============

var superStr: NSString = "123456789qwertyuiasdfghj"

//从index开始(包括index)提取字符串后面的部分
let sub1 = superStr.substringFromIndex(0)

 //从字符串开始提取到index之前位置(不包括index)
let sub2 = superStr.substringToIndex(5)
print(sub2)

//在字符串中提取某个范围中的字符串
let sub3 = superStr.substringWithRange(NSRange.init(location: 1, length: 3))
print(sub3)

//11.从文件中读取内容

========重点========

//获取文件路径
var path: String = "/Users/xuli/Desktop/猪之歌.txt"

//读取内容
//1、文件路径
//2、文件内容的编码 UTF8
let contents = try! NSString.init(contentsOfFile: path, encoding: NSUTF8StringEncoding)
print(contents)

3.可变字符串方法

//1.创建空的可变字符串

let mutable1 = NSMutableString.init(capacity: 0)

//2.将不可变字符串转化成可变字符串

let mutable2 = NSMutableString.init(string: "hello world")

//3.添加

//追加
mutable2.appendString("中国")
mutable2.appendFormat("%d", 998)
print(mutable2)

//插入
mutable2.insertString("🐱🐶🐰", atIndex: 1)
print(mutable2)

//4.删除

mutable2.deleteCharactersInRange(NSRange.init(location: 0, length: 10))
print(mutable2)

//5.修改

//修改指定索引的元素
mutable2.replaceCharactersInRange(NSRange.init(location: 0, length: 1), withString: "1234567812345678")
print(mutable2)

//修改出现在指定位置的多个子字符串
//1、目标子串
//2、用来替换的子串内容
//3、查找字符串的方向
//4、替代子串的范围
mutable2.replaceOccurrencesOfString("123", withString: "♣️♠️", options: NSStringCompareOptions.BackwardsSearch, range: NSRange.init(location: 0, length: mutable2.length))
print(mutable2)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容