[Swift]String的坑

  1. 在String中获取某个位置的Character,各Swift版本的差异
    • Swift 3.0
let text = "abc"
let index2 = text.index(text.startIndex, offsetBy: 2) //will call succ 2 times
let lastChar: Character = text[index2] //now we can index!

let characterIndex2 = text.characters.index(text.characters.startIndex, offsetBy: 2)
let lastChar2 = text.characters[characterIndex2] //will do the same

let range: Range<String.Index> = text.range(of: "b")!
let index: Int = text.distance(from: text.startIndex, to: range.lowerBound)
    • Swift 2.x
let text = "abc"
let index2 = text.startIndex.advancedBy(2) //will call succ 2 times
let lastChar: Character = text[index2] //now we can index!
let lastChar = text.characters[index2] //will do the same

let range: Range<String.Index> = text.rangeOfString("b")!
let index: Int = text.startIndex.distanceTo(range.startIndex) //will call successor/predecessor several times until the indices match
    • Swift 1.x
let text = "abc"
let index2 = advance(text.startIndex, 2) //will call succ 2 times
let lastChar: Character = text[index2] //now we can index!

let range = text.rangeOfString("b")
let index: Int = distance(text.startIndex, range.startIndex) //will call succ/pred several times
时间: 2024-08-07 21:17:43

[Swift]String的坑的相关文章

Swift String length property

Swift的String竟然没有length属性,好难受,每次要获取String的字符串长度都要借助全局函数countElements. 没办法,只有扩展String结构体,给它添加一个属性了. import Foundation extension String { // readonly computed property var length: Int { return countElements(self) } } let a = "hechengmen" println(a.

Swift - String, Character

String, Character String 在 Swift 中使用双引号(")作为界限: let greeting = "Hello!" // greeting's type is String Character 可以从string初始化,只要只包含一个字符: let chr: Character = "H" // valid let chr2: Character = "??" // valid let chr3: Chara

Swift - String与NSString的区别,以及各自的使用场景

String是Swift里新增加的类型,它与原来的NSString可以很方便地互相转换.但在实际开发中,我们该如何选择? 1,能使用String类型就尽量使用String类型,原因如下: (1)现在Cocoa里所有的API都能接受和返回String类型,所以也没必要特地转换下. (2)Swift的String是struct,而NSString类是NSObject,所以String更符合字符串“不变”这一特性.同时,在不触及NSString特有操作和动态特性的时候,使用String的方法,在性能上

Swift - String

1.String 基础 1.字符串字面量 字符串字面量: 字符串字面量是由双引号包裹着的具有固定顺序的文本字符 例如: let = someString = "Hello World!" 字符串常量可包含的字符: 1. 转义字符 \0(空字符).\\(反斜线).\t(水平制表符).\n(换行符).\r(回车符).\"(双引号).\'(单引号) 2. 单字符 Unicode 标量, 写成 \xnn, 其中 nn 为两位十六进制数. 2. 单字符 Unicode 标量, 写成 \

Swift String 一些常用方法

直接上代码 //字符串 //1 判断字符串是否为空 var test1Str="" var test1Str2:String = String(); println("test1Str" + (test1Str.isEmpty ? "没有值" : "有值")) println("test1Str2" + (test1Str2.isEmpty ? "没有值" : "有值"

String的坑

   想必大家在熟悉不过了,不错今天就遇到了这个万年坑,哪怕喜欢翻源码的人,也不屑一顾翻它的源码,良言相劝最好翻下源码. 1. String为啥被定义为final ? 2. String是线程安全的么 ? 3. String的设计思想是什么 ? 4. 偏移量是什么 ? 在不看下面解释的时候自己想想,是不是真的了解,每天都能遇见的String这个对象 ??? 先说String是线程安全的么? 答:是线程安全的,都定义final(不可变)了,这都不安全什么才算安全,必须要看到 synchronize

Swift String类型常规操作

去除string 首尾的空格var str = " Hello the world   "let whitespace = NSCharacterSet.whitespaceAndNewlineCharacterSet()str = str.stringByTrimmingCharactersInSet(whitespace)  如下图效果: 陆续添加中...

swift String 扩展

// import Foundation import UIKit /// /// @brief String的通用扩展方法 /// extension String { /// /// @brief 获取字符串的高度 /// @param fontSize 字体大小 /// @param width 限制一行显示的宽度 /// @return 返回文本在width宽度的条件下的总高度 /// func height(let fontSize: CGFloat, let width: CGFlo

swift - String 子串

///1, 截取规定下标之后的字符串 func subStringFrom(index: Int) -> String { let temporaryString: String = self let temporaryIndex = temporaryString.index(temporaryString.startIndex, offsetBy: index) return String(temporaryString[temporaryIndex...]) } ///2, 截取规定下标之