您的位置:首页 > 移动开发 > Swift

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

2015-09-23 12:23 423 查看
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?.startIndexstr.removeRange(range!)// 删除指定字符串var str = "Hello, playground"var range = str.rangeOfString("play")range?.startIndexstr.removeRange(range!)


字符串函数和操作符

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

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

返回一个布尔值,确定该字符串是否为空
2hasPrefix(prefix: String)

函数检查给定的参数字符串是否以 string 为前缀
3hasSuffix(suffix: String)

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

函数将数字字符串值转换成整数
5count()

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

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

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

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

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

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

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

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

操作符以确定两个字符串是否相等
注:只要引入Foundation String 就可以使用Object-C中的所有方法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: