swift 基本数据类型--字符串

Swift 字符串是字符有序集合,如“Hello, World!”,它们是由 Swift 的 String 数据类型表示,这也代表字符类型值的集合。

创建字符串

// 定义字符串的方法

var sj = ""

var sj1:String

var sj2 =String()

注:使用let创建常量,则该字符串不可以被修改。使用var定义变量字符串,字符串可以被修改

可以通过使用一个空字符串或创建 String 类的一个实例来创建一个空的字符串,如下所示。还可以检查一个字符串是否为空,使用布尔属性 isEmpty。

var stringA = ""

if stringA.isEmpty {
   println( "stringA is empty" )
} else {
   println( "stringA is not empty" )
}

// Empty string creation using String instance
let stringB = String()

if stringB.isEmpty {
   println( "stringB is empty" )
} else {
   println( "stringB is not empty" )
}
当上述代码被编译和执行时,它产生了以下结果:

stringA is empty
stringB is empty
判断字符串是否相等

var str1 = "Hello"

var str2 = "Hello word"

if str1 == str2 {

println("str1 等于 str2")

}else{

println("str1 不等于 str2")

}

函数检查给定的参数字符串是否以 string 为后缀

var str1 = "hello"

var str2 = "h"

str1.hasSuffix(str2)

例子:

let romeoAndJuliet = [

    "Act 1 Scene 1: Verona, A public place",

    "Act 1 Scene 2: Capulet's mansion",

    "Act 1 Scene 3: A room in Capulet's mansion",

    "Act 1 Scene 4: A street outside Capulet's mansion",

    "Act 1 Scene 5: The Great Hall in Capulet's mansion",

    "Act 2 Scene 1: Outside Capulet's mansion",

    "Act 2 Scene 2: Capulet's orchard",

    "Act 2 Scene 3: Outside Friar Lawrence's cell",

    "Act 2 Scene 4: A street in Verona",

    "Act 2 Scene 5: Capulet's mansion",

    "Act 2 Scene 6: Friar Lawrence's cell"

]


for scenc inromeoAndJuliet {

    if scenc.hasSuffix("Act 1 "){

        println(scenc)

    }

}


初始化一个字符串也可以使用 

var str =String(count:4,repeatedValue:"s"),count表明该字符串的长度为4 ,repeatedValue重复值为s

Unicode字符串

Swift 提供了for-in循环来遍历String的每个字符,但如果程序需要访问String底层存储的Unicode值,可以通过遍历在 UTF8 ,UTF16 和unicodeScalarView属性访问字符串的 UTF-8 ,UTF-16和 UTF-32表示,如下面的示例:
import Cocoa

var unicodeString   = "Dog‼"

println("UTF-8 Codes: ")
for code in unicodeString.utf8 {
   print("\(code) ")
}

print("\n")

println("UTF-16 Codes: ")
for code in unicodeString.utf16 {
   print("\(code) ")
}

当上述代码被编译和执行时,它产生了以下结果:

UTF-8 Codes: 
68 111 103 226 128 188 240 159 144 182 
UTF-16 Codes: 
68 111 103 8252 55357 56374 
从该上面代码可以看出unicodeString字符串前面的三个引文字符,物流获取哪种形式的Unicode编码程序返回的值都一样
大小写转换

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.
// 3.将首字母大写
 var str:String = "sunjing" 

str.capitalizedString

字符串是否包含其他字符

var myString = "This is a string test"
if myString.rangeOfString("string") { 返回的是该字符串范围的值为可选类型,不存在则返回nil从前向后搜索
    println("exists")
}

var str:String?

str = "This is a string test - string "

// 从后向前搜索

str?.rangeOfString("string", options: NSStringCompareOptions.BackwardsSearch)

还有不区分大小写等等...

字符串统计个数

var myString = "Here is my string, lets count the characters!"
count(myString)  
字符串去空格

var myString = "    Let's trim the whitespace    "
var newString = myString.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())
字符串分割为字符串数组

//单一分隔符:只有一种分割符
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"]
字符串转换为NSData

let myString = "String to encode"
let string: NSString = myString
let data = string.dataUsingEncoding(NSUTF8StringEncoding)

将字符串转换成Int

var str = "1"

str.toInt()

字符串的拼接

俩种方式:

var str =String(count:4,repeatedValue:c1)

println(str)

str +="aaa"

var sq ="sss"

sq.append(c1)

Rang 在字符串的用法

var xjj = "Welcome to Play Swift! Step by Step learn Swift language from now !"

let strRange = Range<String.Index>(start: xjj.startIndex, end: xjj.endIndex)

let startIndex = xjj.startIndex

// 重开始到第10个字符的索引

let endIndex = advance(startIndex, 10)

let searchRange = Range<String.Index>(start: startIndex, end: endIndex)

xjj.rangeOfString("Step", options: NSStringCompareOptions.CaseInsensitiveSearch, range: searchRange)

var toIndex = advance(xjj.startIndex, 4)

var fromIndex = advance(xjj.startIndex, 14)

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

xjj.substringFromIndex(fromIndex)

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

xjj.substringToIndex(toIndex)

// 根据字符串的索引范围截取字符串

xjj.substringWithRange(searchRange)

// 在制定索引后插入字符串

var insertIndex = advance(xjj.startIndex, 22)

xjj.insert("!", atIndex: insertIndex)

// 根据索引范围移除字符串

xjj.removeAtIndex(insertIndex)

str.removeRange(searchRange)

// 替换字符串

var replaceEndIndex = advance(xjj.startIndex, 13)

xjj.stringByReplacingCharactersInRange(searchRange, withString: "ssss")

var str = "Hello, playground"

var range = str.rangeOfString("play")

range?.startIndex

str.removeRange(range!)

// 删除指定字符串

var str = "Hello, playground"

var range = str.rangeOfString("play")

range?.startIndex

str.removeRange(range!)


字符串函数和操作符

Swift 支持多种方法,和运算符相关的字符串:

S.No 函数/操作符及用途
1

isEmpty

返回一个布尔值,确定该字符串是否为空

2

hasPrefix(prefix: String)

函数检查给定的参数字符串是否以 string 为前缀

3

hasSuffix(suffix: String)

函数检查给定的参数字符串是否以 string 为后缀

4

toInt()

函数将数字字符串值转换成整数

5

count()

全局函数用来计算字符串中的字符数

6

utf8

属性返回一个字符串的 UTF-8 表示

7

utf16

属性返回一个字符串的 UTF-16 表示

8

unicodeScalars

属性返回一个字符串的 Unicode 标表示

9

+

运算符用来连接两个字符串,或者一个字符串和一个字符或两个字符

10

+=

操作符要追加一个字符串或字符到一个现有的字符串

11

==

操作符以确定两个字符串是否相等

12

<

操作符进行逐一比较,计算以确定一个字符串是否为小于另一个

13

==

操作符以确定两个字符串是否相等

注:只要引入Foundation String 就可以使用Object-C中的所有方法


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值