Swift String常用方法
来源:互联网 发布:淘宝怎么不能批量发货 编辑:程序博客网 时间:2024/06/05 21:58
参考Java String类, 对Swift String用法做个总结。
基础篇:
1、 字符串长度: 3种方法。
let str = "12345678"let len1 = strlen(str) //8let len2 = str.count //8let len3 = (str as NSString).length //8
2、字符串拼接: 使用加好或者append函数。
let str1 = "abc" + "cde"var str = "abc"str.append("cde")
3、字符串遍历:
let str = "abcdefg"for char in str { print(char)}
let str = "abcdefg"for index in str.indices.indices { print(str[index]) //通过下标访问}
或带下标
let str = "abcdefg"for (index, value) in str.enumerated() { print("\(index) --- \(value)")}
4、字符串全部大写或小写:
let str = "abcdefg"print(str.lowercased()) //全部小写print(str.uppercased()) //全部大写
5、多行字符串使用3个双引号。
let verse = """ To be, or not to be - that is the question; Whether 'tis nobler in the mind to suffer The slings and arrows of outrageous fortune, Or to take arms against a sea of troubles,"""
6、ascii码
let ascii = UnicodeScalar("a")?.value //a的ascii码print(ascii ?? "") //97
7、截取子字符串
let str = "abcdefg"let indexD = str.index(of: "d")let sub = str[indexD!...] //defglet sub1 = str[indexD!..<str.endIndex] //defg 注意避免下标越界let sub2 = str[str.startIndex...indexD!] //abcd或
let sub3 = (str as NSString).substring(to: 3) //abclet sub4 = (str as NSString).substring(with: NSMakeRange(2, 3)) //cde
8、判断是否含有字符(串)
let str = "abcdefg"print(str.contains("cd")) //trueprint(str.contains("c")) //trueprint(str.contains("o")) //false
9、字符串分割
//字符串拆分(以单个或多个字符为分隔符)let str = "abcdefg$$aaaa$$bbbb$$ccc"let des1 = (str as NSString).components(separatedBy: "$$")let des2 = str.components(separatedBy: "$$")print(des1) //["abcdefg", "aaaa", "bbbb", "ccc"]print(des2) //["abcdefg", "aaaa", "bbbb", "ccc"]
10、字符串替换:
let str = "abcdefg$$aaaa$$bbbb$$ccc"let dest11 = str.replacingOccurrences(of: "$$", with: "**")print(dest11)
进阶篇:
1、获取下标字符:
extension String { //获取下标对应的字符 func charAt(pos: Int) -> Character? { if pos < 0 || pos >= count { return nil //判断边界条件 } let index = self.index(self.startIndex, offsetBy: pos) let str = self[index] return Character(String(str)) }}let str = "abcdef"print(str.charAt(pos: 1)!) //b
2、找出字符串中最长的子串, 字符串中包含中文、特殊字符、字母、数字等等。 思路: 使用正则找出所有字符串, 然后按长度排序找到最长的。
//找出字符串中英文字母最长的一个func LongestWord(_ sen: String) -> String { let regx = try? NSRegularExpression(pattern: "[a-zA-Z]+", options: .caseInsensitive) if let results = regx?.matches(in: sen, options: [], range: NSMakeRange(0, sen.count)) { var array: [String] = [] for item in results { let cur = (sen as NSString).substring(with: item.range) array.append(cur) //找出所有符合要求的字符串 } array.sort(by: { a,b in if a.count > b.count { //降序排列 return true } else { return false } }) return array[0] //最长的字符串 } return sen}let ret = LongestWord("this is a test demo.1234324234穿插着中文和特殊字母@#@#adfsdfsdf!@#@$adfsdf")print(ret) //adfsdfsdf
3、字符串首字母变成大写(考虑字符串中有标点符号):
//首字母大写, 要求支持标点func LetterCapitalize(_ str: String) -> String { var result = "" for i in 0..<str.count{ let cur = str.charAt(pos: i) if i == 0 { let tmp = String(cur!).uppercased() //变成大写 result.append(tmp) } else { let pre = str.charAt(pos: i-1) //if pre is not character if (UnicodeScalar(String(pre!))!.value >= UnicodeScalar("a")!.value && UnicodeScalar(String(pre!))!.value <= UnicodeScalar("z")!.value) || (UnicodeScalar(String(pre!))!.value >= UnicodeScalar("A")!.value && UnicodeScalar(String(pre!))!.value <= UnicodeScalar("Z")!.value){ result.append(String(cur!)) } else { result.append(String(cur!).uppercased()) } } } return result }let ret = LetterCapitalize("this a test message")print(ret)
4、获取UILable控件显示String需要的高度
extension String { /** * 查询lable高度 * @param fontSize, 字体大小 * @param width, lable宽度 */ func getLableHeightByWidth(_ fontSize: CGFloat, width: CGFloat, font: UIFont) -> CGFloat { let size = CGSize(width: width, height: CGFloat.greatestFiniteMagnitude) let paragraphStyle = NSMutableParagraphStyle() paragraphStyle.lineBreakMode = .byWordWrapping let attributes = [NSFontAttributeName:font, NSParagraphStyleAttributeName:paragraphStyle.copy()] let text = self as NSString let rect = text.boundingRect(with: size, options:.usesLineFragmentOrigin, attributes: attributes, context:nil) return rect.size.height } }
阅读全文
0 0
- Swift String常用方法
- Swift String 一些常用方法
- swift 字典常用方法
- Swift 常用方法总结
- Swift-String常用操作的改变
- Swift常用的String类扩展
- Swift之NSString常用方法
- Swift 字典的常用方法
- Swift UIView 常用添加方法
- swift UIView常用添加方法
- Swift ☞ 数组常用方法
- [Swift 开发] GCD常用方法
- String常用方法
- String常用方法
- String的常用方法
- String类常用方法
- String 常用方法备忘
- String常用方法
- PAT乙级 1024. 科学计数法 (C语言)
- Qt之设置文件的读写属性
- jQuery全选全不选 批量删除
- uboot移植DM9000
- 程序员之路-学习经验总结分享
- Swift String常用方法
- sscanf解析字符串
- 为什么需要高阶函数
- $curl
- SpringBoot和mongodb开发需要使用到的注解和属性
- Android设计模式--观察者模式
- 原创 京东王栋:618大促网关承载十亿调用量背后的架构实践
- HDU2389 Rain on your Parade(HK算法)
- 马云:网上90%的评论都没脑子 现在有网上病夫