Swift 字符串
来源:互联网 发布:极光推送php文档 编辑:程序博客网 时间:2024/06/03 07:33
一、定义
1、创建字符串
//使用字符串字面量var stringA = "Hello, World!"print( stringA )//String 实例化var stringB = String("Hello, World!")print( stringB )
输出结果
Hello, World!Hello, World!
2、空字符串
// 使用字符串字面量创建空字符串var stringA = ""if stringA.isEmpty { print( "stringA 是空的" )} else { print( "stringA 不是空的" )}// 实例化 String 类来创建空字符串let stringB = String()if stringB.isEmpty { print( "stringB 是空的" )} else { print( "stringB 不是空的" )}
输出结果
stringA 是空的stringB 是空的
3、字符串常量
// stringA 可被修改var stringA = "该字符串:"stringA += "可以被修改!!!"print( stringA )// stringB 不能修改let stringB = String("该字符串:")//stringB += "不可以被修改!!!"print( stringB )
输出结果:
该字符串:可以被修改!!!Optional("该字符串:")
4、字符串中插入值
字符串插值是一种构建新字符串的方式,可以在其中包含常量、变量、字面量和表达式。 您插入的字符串字面量的每一项都在以反斜线为前缀的圆括号中:
var varA = 20let constA = 100var varC: Float = 20.0 var stringA = "\(varA) 乘于 \(constA) 等于 \(varC * 100)"print( stringA )
输出结果:
20 乘于 100 等于 2000.0
5、字符串连接
字符串可以通过 + 号来连接,实例如下:
let stringA = "该字符串"let stringB = "是可以这样被连接的"let stringC = stringA + stringBprint( stringC )
输出结果:
该字符串是可以这样被连接的
6、Unicode 字符串
Unicode 是一个国际标准,用于文本的编码,Swift 的 String 类型是基于 Unicode建立的。你可以循环迭代出字符串中 UTF-8 与 UTF-16 的编码,实例如下:
var unicodeString = "看,这是我的UTF"print("UTF-8 编码: ")for code in unicodeString.utf8 { print("\(code) ")}print("\n")print("UTF-16 编码: ")for code in unicodeString.utf16 { print("\(code) ")}
输出结果:
UTF-8 编码: 231 156 139 239 188 140 232 191 153 230 152 175 230 136 145 231 154 132 85 84 70 UTF-16 编码: 30475 65292 36825 26159 25105 30340 85 84 70
二、字符串函数及运算符
1、字符串长度
字符串长度使用 String.characters.count 属性来计算,实例如下:
let stringA = "你想知道我的长度吗,那就试一下吧!!!"let count = stringA.characters.countprint( "\"\(stringA)\"长度为 \(count)" )
输出结果:
"你想知道我的长度吗,那就试一下吧!!!"长度为 19
2、字符串比较
(1)==
你可以使用 == 来比较两个字符串是否相等:
let varA = "Hello, Swift!"let varB = "Hello, World!"if varA == varB { print( "\(varA) 与 \(varB) 是相等的" )} else { print( "\(varA) 与 \(varB) 是不相等的" )}
输出结果:
Hello, Swift! 与 Hello, World! 是不相等的
(2)、!=
比较两个字符串是否不相等。
let varA = "Hello, Swift!"let varB = "Hello, World!"if varA != varB { print( "\(varA) 与 \(varB) 是不相等的" )} else { print( "\(varA) 与 \(varB) 是相等的" )}
输出结果:
Hello, Swift! 与 Hello, World! 是不相等的
(3)、< 与 >
比较两个字符串,对两个字符串的字母逐一比较。
let varA = "Hello, Swift!"let varB = "Hello, World!"if varA > varB { print( "\(varA) 字符串大于 \(varB) " )} else { print( "\(varA) 字符串不大于 \(varB)" )}if varA < varB { print( "\(varA) 字符串小于 \(varB) " )} else { print( "\(varA) 字符串小大于 \(varB)" )}
输出结果:
Hello, Swift! 字符串不大于 Hello, World!Hello, Swift! 字符串小于 Hello, World!
3、前缀和后缀
(1)字符串前缀hasPrefix
let name = "Hello,world!"if name.hasPrefix("Hello") { print("有对应的 Hello 前缀")} else { print("没有对应的 Hello 前缀")}
输出结果:
有对应的 Hello 前缀
(2)、字符串前缀hasSuffix
let name = "Hello,world!"if name.hasSuffix("!") { print("有对应的 ! 前缀")} else { print("没有对应的 ! 前缀")}
输出结果:
有对应的 ! 前缀
4、字符串大小写转换
(1)、字符串小写转换大写
var name = "Hello,world!"name = name.uppercased()
输出结果:
HELLO,WORLD!
(2)、字符串大写转换小写
var name = "Hello,world!"name = name.lowercased()
输出结果:
hello,world!
5、访问和修改字符串
每个String值都有一个关联的索引(index)类型,String.index,它对应着字符串中的每一个Character的位置
(1)、字符串索引
- (1)、startIndex:获取一个Stirng的第一个Character的索引;
- (2)、endIndex:获取一个String的最后一个Character的后一个位置的索引。因此改属性不能作为一个字符串的有效下标。注意:如果String是空串,startIndex和endIndex是相等的;
- (3)、index(before:):可以立即得到index前面的一个索引
- (4)、index(after:):可以立即得到index后面的一个索引
let greeting = "Hello,world!"print("第一个字符是:\(greeting[greeting.startIndex])")print("最后一个字符是:\(greeting[greeting.index(before: greeting.endIndex)])")print("第二个字符是:\(greeting[greeting.index(greeting.startIndex, offsetBy: 1)])")print("倒数第二个字符是:\(greeting[greeting.index(greeting.startIndex, offsetBy: greeting.characters.count - 2)])")
输出结果:
第一个字符是:H最后一个字符是:!第二个字符是:e倒数第二个字符是:d
(2)、插入、删除、替换
- (1)、insert(_:at:):可以在一个字符串的指定索引插入一个字符
- (2)、insert(contentsOf:at:):可以在一个字符串的指定索引插入一个段字符串
- (3)、remove(at:):可以在一个字符串的指定索引删除一个字符
- (4)、removeSubrange(_:):可以在一个字符串的指定索引删除一个子字符串
- (5)、replaceSubrange(_: with:):可以在一个字符串的指定索引替换一个字符串
- (6)、replacingOccurrences(of: with:):将一个字符串中的固定字符串替换成其他字符串
- (7)、replacingOccurrences(of: with: options: range:):将一个字符串中的固定字符串替换成其他字符串,可选择String.CompareOptions选项,例如忽略大小写字母。
var welcome = "hello,world"welcome.insert("!", at: welcome.endIndex)print(welcome)welcome.insert(contentsOf: " there".characters, at: welcome.index(before: welcome.endIndex))print(welcome)welcome.remove(at: welcome.index(before: welcome.endIndex))print(welcome)let range01 = welcome.index(welcome.endIndex, offsetBy: -6)..<welcome.endIndexwelcome.removeSubrange(range01)print(welcome)let range02 = welcome.index(welcome.endIndex, offsetBy: -6)..<welcome.endIndexwelcome.replaceSubrange(range02, with: "!")print(welcome)welcome = welcome.replacingOccurrences(of: "hello", with: "world")print(welcome)welcome = welcome.replacingOccurrences(of: "WORLD", with: "HELLO", options: String.CompareOptions.caseInsensitive, range: nil)print(welcome)
输出结果:
hello,world!hello,world there!hello,world therehello,worldhello!world!HELLO!
6、去字符串前后多余的固定字符
(1)、删除前后多余的空格
let name01 = " hello world! "print(name01)let name02 = name01.trimmingCharacters(in: CharacterSet.whitespaces)print(name02)
输出结果:
hello world! hello world!
(2)、删除前后指定的字符
let str1 = "...<<hangge.com>>..."//删除前后<>let characterSet = CharacterSet(charactersIn: "<>.")let str2 = str1.trimmingCharacters(in: characterSet)//打印结果print("原字符串:\(str1)")print("新字符串:\(str2)")
输出结果:
原字符串:...<<hangge.com>>...新字符串:hangge.com
CharacterSet 里各个枚举类型的含义如下:
controlCharacters:控制符
whitespaces:空格
newlines:换行符
whitespacesAndNewlines:空格换行
decimalDigits:小数
letters:文字
lowercaseLetters:小写字母
uppercaseLetters:大写字母
nonBaseCharacters:非基础
alphanumerics:字母数字
decomposables:可分解
illegalCharacters:非法
punctuationCharacters:标点
capitalizedLetters:大写
symbols:符号
三、数据类型转换
1、转换成基本类型
(1)、String->Int
let stringInt = "123"print(Int(stringInt) ?? "0")
输出结果:
123
(2)、String->Float
let stringFloat = "123"print(Float(stringFloat) ?? "0.00")
输出结果:
123.0
(3)、String->Double
let stringDouble = "123"print(Double(stringDouble) ?? "0.00")
输出结果:
123.0
(4)、String->Bool
let stringBool = "true"print(Bool(stringBool) ?? false)
输出结果:
true
2、String->Array
let names = "boy,girl,man,woman"let nameArr = names.components(separatedBy: ",")print(nameArr)let counts = "1,2,3,4,5,6.7.8.9"let characters = CharacterSet.init(charactersIn: ",.")let countArr = counts.components(separatedBy: characters)print(countArr)
输出结果:
["boy", "girl", "man", "woman"]["1", "2", "3", "4", "5", "6", "7", "8", "9"]
3、String->Data
let dataStr = "String to encode data"let data = dataStr.data(using: .utf8)
四、遍历
let name = "xiao, where are you from?"print("字符遍历")for char in name.characters { print(char)}print("unicode遍历")for code in name.unicodeScalars { print(code)}
输出结果:
字符遍历xiao,whereareyoufrom?unicode遍历xiao,whereareyoufrom?
五、获取字符串长度
// 计算字符串的宽度,高度let string: String = "swift中计算字符串的宽度和高度。swift中计算字符串的宽度和高度。swift中计算字符串的宽度和高度。"let font: UIFont = UIFont.systemFont(ofSize: 12)let attributes = [NSFontAttributeName: font]let option = NSStringDrawingOptions.usesLineFragmentOriginlet rect:CGRect = string.boundingRect(with: CGSize(width: 100, height: 999), options: option, attributes: attributes, context: nil)print("rect:\(rect)")
输出:
rect:(0.0, 0.0, 98.016, 85.921875)
- swift 字符串
- swift 字符串
- Swift-字符串
- Swift 字符串
- swift 字符串
- Swift-字符串
- swift 字符串
- swift字符串
- Swift 字符串
- Swift字符串
- swift字符串
- swift字符串
- Swift 字符串
- swift 字符串
- Swift 字符串
- Swift--字符串和字符
- Swift 字符串+集合(三)
- Swift字符串类型
- Android App整体架构设计的思考
- SpringMVC确定入参POJO的对象
- 使用“\n\t”将多行字符串拼接起来
- Rational Software Archtect 代码到类图 类图到代码
- Android之AsyncTask
- Swift 字符串
- 顺时针打印矩阵
- 逆向工程---Mybatis学习笔记(十二)
- Locally Assembled Binary (LAB) Feature with Feature-centric Cascade 论文翻译
- java web 监听系统在线用户人数(tomcat session的创建时机)
- macOS下TAR.GZ方式安装MySQL5.7
- 根据图片的URL地址判断图片的格式
- 关于python中使用PYQT时中文乱码问题
- 尺寸单位rpx和px的区别