Swift学习笔记(4)--字符串及基本使用

String是例如“hello, world”,“海贼王”
这样的有序的Character(字符)类型的值的集合,通过String类型来表示。

Swift 的String类型与
Foundation NSString类进行了无缝桥接。如果您利用 Cocoa 或 Cocoa
Touch 中的 Foundation 框架进行工作。所有NSString API
都可以调用您创建的任意String类型的值。除此之外,还可以使用本章介绍的String特性。您也可以在任意要求传入NSString实例作为参数的
API 中使用String类型的值作为替代

注:Swift
String类型是值类型。
如果您创建了一个新的字符串,那么当其进行常量、变量赋值操作或在函数/方法中传递时,会进行值拷贝。
任何情况下,都会对已有字符串值创建新副本,并对该新副本进行传递或赋值操作。

1.字符串定义

  var s = "abc"

  var s1:String = "abc"  

?





1

2

3

// 两个字符串均为空并等价。

var emptyString = ""              
// 空字符串字面量

var anotherEmptyString = String()  // 初始化 String 实例

  字符串字面量可以包含以下特殊字符:

    • 转义字符\0(空字符)、\\(反斜线)、\t(水平制表符)、\n(换行符)、\r(回车符)、\"(双引号)、\‘(单引号)。

    • 单字节 Unicode 标量,写成\xnn,其中nn为两位十六进制数。

    • 双字节 Unicode 标量,写成\unnnn,其中nnnn为四位十六进制数。

    • 四字节 Unicode
      标量,写成\Unnnnnnnn,其中nnnnnnnn为八位十六进制数。

?





1

2

3

4

5

let wiseWords = "\"我是要成为海贼王的男人\" - 路飞"

// "我是要成为海贼王的男人" - 路飞

let dollarSign = "\x24"               
// $,  Unicode 标量 U+0024

let blackHeart = "\u2665"             
// ?,  Unicode 标量 U+2665

let sparklingHeart = "\U0001F496"   
// ??, Unicode 标量 U+1F496

2.字符串拼接

?





1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

//字符串拼接

var x = "x"

var y = "y"

var z = x + y

var m = z + "m"

var n = "n"

n += m

//使用\()完成字符串的插值

var result = "\(x)==\(y)==\(z)==\(m)==\(n)"

println(result)//结果:x==y==xy==xym==nxym

//字符串与字符拼接

let
s1 = "hello"

let
c1: Character = "!"

let
plus1 = s1 + c1        // 等于 "hello!"

let
plus2 = c1 + s1        // 等于 "!hello"

  

3.字符串遍历

?





1

2

3

4

5

var myString = "This is a string"

for character in
myString{

   println(character)

}

  

4.字符个数统计

?





1

2

var myString = "Here is my string, lets count the characters!"

println(countElements(myString))

  

5.字符串比较 & 是否包含前后缀

?





1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

var check1:String = "Swift is good!"

var check2:String = "Swift is good!"

//字符串是否相等

if check1 == check2 {

    println("check1 = check2")

} else
{

    println("check1 != check2")

}

//是否包含前缀

var
preCheck = "Swift"

if check1.hasPrefix(preCheck) {

    println("包含前缀")

}

//是否包含后缀

var
sufCheck = "good!"

if check1.hasSuffix(sufCheck) {

    println("包含后缀")

}

  

6.大小写转换

?





1

2

3

4

5

6

7

let myString = "Wait a moment, please."

let newString = myString.uppercaseString

//The string is now "WAIT A MOMENT, PLEASE."

let myString = "Wait a moment, please."

let newString = myString.lowercaseString

// The string is now "wait a moment, please."

  

7.字符串是否包含其他字符串

?





1

2

3

4

var myString = "This is a string test"

if myString.rangeOfString("string") {

    println("exists")

}

  

8.字符串截取

?





1

2

3

4

5

6

7

8

9

10

//截取字符串的标识位从1开始计数

let myString = "ABCDEFGHI"

//1.从目标标识位后一个字符开始截取余下的字符串

let mySubstring = (myString.substringFromIndex(2))

println(mySubstring)    // "CDEFGHI"

//2.从第一个字符截取到目标标识位

let mySubstring2 = (myString.substringToIndex(4))

println(mySubstring2)   // "ABCD"

  

9.字符串去空格

?





1

2

var myString = "    Let‘s trim the whitespace    "

var newString = myString.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())

  

10.字符串分割为字符串数组

?





1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

//单一分隔符:只有一种分割符

var myString = "Berlin, Paris, New York, San Francisco"

//1.隐式定义字符串数组

var myArray = myString.componentsSeparatedByString(",")

//2.显示定义字符串数组

var myArray2 : String[] = myString.componentsSeparatedByString(", ")

for em in
myArray2 {

    print(em)   //Berlin Paris New York San

}

//多重分割符:有2个或两个以上分隔符

var
myString2 = "One-Two-Three-1 2 3"

var
array2:String[] = myString2.componentsSeparatedByCharactersInSet(NSCharacterSet (charactersInString: "- "))

//["One", "Two", "Three", "1", "2", "3"]

  

11.字符串转换为NSData

?





1

2

3

let myString = "String to encode"

let string: NSString = myString

let data = string.dataUsingEncoding(NSUTF8StringEncoding)

  

参考文章:http://www.learnswiftonline.com/reference-guides/string-reference-guide-for-swift/

Swift学习笔记(4)--字符串及基本使用,布布扣,bubuko.com

时间: 2024-10-27 00:12:14

Swift学习笔记(4)--字符串及基本使用的相关文章

Swift学习笔记- 3. 字符串和字符

初始化空字符串 创建空字符串,可以将空的字符串字面量赋值给变量,也可以初始化一个新的 String 实例: var emptyString = ""var anotherEmptyString = String()//两个字符串均为空,并相等 可以通过检查其 Boolean 类型的 isEmpty 属性来判断该字符串是否为空: if emptyString.isEmpty {     println("什么都没有") } 字符串可变性 将一个特定字符串分配给一个变量

Swift学习笔记

Apple 新推的Swift已经好几天了.对于向我这样的oc都还没完全琢磨透彻的菜鸟来说--(简直就是福利啊,joke) 看了几天的Swift,只是有了基本的印象.总感觉比较换混乱,可能源自与自己没怎么学过脚本语言.索性,边看边记,加深印象. 本来部分内容源自Apple的<The Swift Programming Language>以及互联网教程.其余内容均为个人理解,不保证正确. 进入正题: 1.Swift是什么? Apple唤他作:雨燕.其实英语过了四级的都应该看出来,Swift还有一层

Swift学习笔记(一):基础

一.常量 & 变量 //常量 let constantsTeam = 1 //变量 var variablesTeam = 2 尽可能使用常量,这样更清晰并且内存更不容易肾亏. 二.显示/隐式指定类型 //隐式 let inferredTeam = 3 //显式 let explicitTeam:Int = 4 三.字符串输出 //通过\(变量或常量名)来引用组合字符串 println("\(inferredTeam) is bigger than \(variablesTeam)!&q

SWIFT学习笔记04

1.在实际编译时,Swift 编译器会优化字符串的使用,使实际的复制只发生在绝对必要的情况下,这意味着您将字符串作为值类型的同时可以获得极高的性能. 2.for character in "Dog!" { println(character) } // D // o // g // ! 3.通过标明一个Character类型注解并通过字符字面量进行赋值,可以建立一个独立的字符常量或变量: let yenSign: Character = "¥" 4.计算字符数量 l

Swift学习笔记(11)--类与结构体

类与结构是编程人员在代码中会经常用到的代码块.在类与结构中可以像定义常量,变量和函数一样,定义相关的属性和方法以此来实现各种功能. 和其它的编程语言不太相同的是,Swift不需要单独创建接口或者实现文件来使用类或者结构.Swift中的类或者结构可以在单文件中直接定义,一旦定义完成后,就能够被直接其它代码使用. 注意:一个类的实例一般被视作一个对象,但是在Swift中,类与结构更像是一个函数方法,在后续的章节中更多地是讲述类和结构的功能性. 1.类和结构的异同 类和结构有一些相似的地方,它们都可以

Swift学习笔记(12)--数组和字典的复制

Swift中,数组Array和字典Dictionary是用结构来实现的,但是数组与字典和其它结构在进行赋值或者作为参数传递给函数的时候有一些不同. 并且数组和字典的这些操作,又与Foundation中的NSArray和NSDictionary不同,它们是用类来实现的. 注意:下面的小节将会介绍数组,字典,字符串等的复制操作.这些复制操作看起来都已经发生,但是Swift只会在确实需要复制的时候才会完整复制,从而达到最优的性能. 字典的赋值和复制操作 每次将一个字典Dictionary类型赋值给一个

Swift学习笔记 - 可选 ?

可选类型 使用可选类型(optionals)来处理值可能缺失的情况.可选类型表示: 有值,等于 x 或者 没有值 注意:C 和 Objective-C 中并没有可选类型这个概念.最接近的是 Objective-C 中的一个特性,一个方法要不返回一个对象要不返回nil,nil表示“缺少一个合法的对象”.然而,这只对对象起作用——对于结构体,基本的 C 类型或者枚举类型不起作用.对于这些类型,Objective-C 方法一般会返回一个特殊值(比如NSNotFound)来暗示值缺失.这种方法假设方法的

SWIFT学习笔记05

1.Swift 无需写break,所以不会发生这种贯穿(fallthrough)的情况.2.//用不到变量名,可用"_"替换 for _ in 1...power { answer *= base } 3.case 可以匹配更多的类型模式,包括区间匹配(range matching),元组(tuple)和特定类型的描述. 可以这样用case case 1...3: naturalCount = "a few" 4.如果存在多个匹配,那么只会执行第一个被匹配到的 ca

SWIFT学习笔记02

1.//下面的这些浮点字面量都等于十进制的12.1875: let decimalDouble = 12.1875 let exponentDouble = 1.21875e1 let hexadecimalDouble = 0xC.3p0//==12+3*(1/16) 2.//类型别名,用typealias关键字来定义类型别名 typealias AudioSample = UInt16 var maxAmplitudeFound = AudioSample.min 3.//元组 let ht