参考Java String类, 对Swift String用法做个总结。

基础篇:

1、 字符串长度: 3种方法。

let str = "12345678"
let len1 = strlen(str) //8
let len2 = str.count  //8
let 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 sufferThe 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!...] //defg
let sub1 = str[indexD!..<str.endIndex] //defg  注意避免下标越界
let sub2 = str[str.startIndex...indexD!] //abcd

let sub3 = (str as NSString).substring(to: 3)  //abc
let sub4 = (str as NSString).substring(with: NSMakeRange(2, 3))  //cde

8、判断是否含有字符(串)

let str = "abcdefg"
print(str.contains("cd"))   //true
print(str.contains("c"))    //true
print(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 inif 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 characterif (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 = .byWordWrappinglet attributes = [NSFontAttributeName:font,NSParagraphStyleAttributeName:paragraphStyle.copy()]let text = self as NSStringlet rect = text.boundingRect(with: size, options:.usesLineFragmentOrigin, attributes: attributes, context:nil)return rect.size.height}}

Swift String常用方法相关推荐

  1. 小汤学编程之JAVA基础day10——常用类(二):String常用方法、正则、StringBuffer和StringBuilder、Math和Random类、日期类和数字类

    一.String常用方法 二.正则表达式 1.基本     2.常用     3.高级 三.StringBuilder和StringBuffer类 1.区别     2.常用方法     3.继承结构 ...

  2. 更高效地刷OJ——String常用方法(一)

    因为常用方法较多,所以分为3篇 1.length() : 返回字符串长度,此处的length有别于数组中的length数组中的length为属性,此处的length为方法. 2.charAt() :将 ...

  3. Swift ——String 与 Array

    Swift --String 与 Array 1. String 1.1 String 在内存中的存储 1.2 String.index 2. Array 2.1 Array 的内存结构 2.2 ar ...

  4. swift string转int_Swift进阶二:基本数据类型相关

    变量和常量 Swift中,使用关键字let来声明常量,使用关键字var来声明变量. 而在Objective-C中,如果没有特殊的指明,我们所声明的都是变量.可以通过如下几种方式来声明常量: 使用宏定义 ...

  5. swift String

    初始化空字符串 为了构造一个很长的字符串,可以创建一个空字符串作为初始值.可以将空的字符串字面量赋值给变量,也可以初始化一个新的String 实例: var emptyString = "& ...

  6. Swift String字符串版本更新特性

    var str = "Hello, playground" 字符串,Swift最基本最常用的对象之一. Swift的基本使用,增删改查我们就不说了. 基本字面量 let hello ...

  7. swift string转int_swift中结构体和类的区别(值类型和引用类型的区别)

    在swift中结构体和类有着更多的相同之处,在一般的使用中能够做到互相替换.我们可以先看看官方文档的描述: Unlike other programming languages, Swift does ...

  8. String常用方法API

    String类 1.创建字符串对象--String 类有 11 种构造方法,这些方法提供不同的参数来初始化字符串 1)String s ="Hello"; s引用静态区的字符串字面 ...

  9. Swift - String 还是NSString

    既然像String 这样的类型和Foundation 对应的类时可以无缝转换的,那么我们在使用和选择的时候,有没有什么需要特别注意的呢? 简单来说,没有需要特别注意的,但还是尽可能使用原生的Strin ...

最新文章

  1. 央企名录、央企排名——国务院国有资产监督管理委员会央企名录
  2. python +Django 搭建web开发环境初步,显示当前时间
  3. 使用SAP云平台 + JNDI访问Internet Service
  4. 写出float x 与“零值”比较的if语句——一道面试题分析
  5. linux-centos7 常用的基本命令--目录管理、基本属性
  6. 狱警讲述死刑_BDFL是死刑吗?
  7. 这5个让人窒息的烂代码,你看完都忍不了!
  8. matlab gui输入数据库,从数据库值填充Matlab GUI列表框
  9. 张小龙 4 小时演讲没时间看?看这一篇就够了!「附赠张小龙历年演讲实录 PDF」...
  10. Latex tabular 表格
  11. Chromium OS?本土化气息的的Flint OS
  12. Office 2010 安装过程中出错
  13. 清华大学四连冠,南科大获得最高性能奖!国际大学生超算竞赛SC21结果出炉
  14. CF 285D 285E
  15. 微信小程序使用tensorflow做人脸识别检测卡顿的部分解决思路
  16. 黑马-linux编程
  17. Ubuntu18.04 安装SDN ryu+mininet
  18. AppleScript(7) : 睡眠
  19. 视频格式不符合怎么办?怎样进行视频格式转换?
  20. OpenStack读书笔记

热门文章

  1. Tomcat不自动解压war包
  2. python 网络连接_python切换网络连接
  3. ubuntu下安装CLion并激活,亲测好用
  4. Vscode批量处理
  5. 阿里云联合“产学研媒”发起 BizDevOps 共促计划,助力企业提升组织效能
  6. 【软件测试】功能测试的测试工作流程
  7. 使用System.DirectoryServices.Protocols实现对AD的简单操作
  8. 计算机毕业设计Python+djang的图书馆图书借阅归还管理系统(源码+系统+mysql数据库+Lw文档)
  9. 光标 换为 自定义图片
  10. IPerf3 for Android 7