swiftSwift&Objective-CSwift编程

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

2016-08-11  本文已影响84人  前进的苏辰

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)
上一篇下一篇

猜你喜欢

热点阅读