Swift语法_字符和字符串

字符串,结构体,枚举都是值类型Value Types

Swift 的 String 类型是值类型。 如果您创建了一个新的字符串,那么当其进行常量、变量赋值操作,或在函数/ 方法中传递时,会进行值拷贝。 任何情况下,都会对已有字符串值创建新副本,并对该新副本进行传递或赋值操作。 很明显无论该值来自于哪里,都是您 独自拥有的。 您可以确信传递的字符串不会被修改,除非你自己去修改它。

===========================
字符串相关知识点

  1. 字符串类型String
  2. 字符串可以包含的特殊字符
  3. 字符串初始化
  4. 比较字符串
  5. 连接字符串
  6. 字符串大小写转化
  7. 字符串可变性
  8. 使用字符
  9. 创建字符常量
  10. 字符串插值
  11. 11:计算字符数量
  12. 访问字符串
  13. 插入字符和字符串
  14. 删除字符和字符串

代码如下:

//1:字符串类型String
let strValue:String = "abc"

//2:字符串可以包含的特殊字符
/**
使用转意字符
\0 (null空字符)
\\ (反斜杠)
\t (制表符)
\n (换行符)
\r (回车符)
\" (双引号)
\' (单引号)
\xnn (字节Unicode)  nn表示十六进制
\unnnn (双字节Unicode)
\Unnnnnnnn(四字节Unicode)
*/

let strValue1 = "\"今天是个\'好日子\'\""
print(strValue1)


//let strValue2="\x41"
//print(strValue2)

//let strValue3="\u2600"
//print(strValue3)


//3:字符串初始化的俩种方式
var emptyString1 = ""
var emptyString2 = String()

var emptyString3 = "abc"
var emptyString4 = String("abc")

if emptyString1.isEmpty{
print("emptyString1是一个空字符串")
}


//4:比较字符串
//字符串/字符可以用等于操作符( == )和不等于操作符( != )
//注意:如果两个字符串(或者两个字符)的可扩展的字形群集是标准相等的,那就认为它们是相等的

if emptyString3 == emptyString4
{
print("emptyString3 equal emptyString4")
}


//hasPrefix(_:) 和 hasSuffix(_:) 方法都是在每个字符串中逐字符比较其可扩展的字符群集是否标准相等
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"
]

var act1SceneCount = 0
for scene in romeoAndJuliet {
    if scene.hasPrefix("Act 1 ") {
    ++act1SceneCount
    } }
print("There are \(act1SceneCount) scenes in Act 1")

//5:链接字符串
let str1 = "我是中国人\n"
let str2 = "我爱中国人\n"


var str = str1 + str2//第一种:+
var str3 = "hello"

str += str3; //第二种:+=
print(str)


let appendCharacter:Character = "~"
str.append(appendCharacter)//第三种:append追加
print(str)

//6:字符串大小写转化
let lowercaseStr = "qwertyuiop"
let uppercaseStr = lowercaseStr.uppercaseString
print(uppercaseStr);
print(uppercaseStr.lowercaseString)



//7:字符串可变性 (String Mutability)
//var 变量可修改 let常量不可修改

var variableString = "Horse"
variableString += " and carriage"
print("\(variableString)")

let constantString = "Horse"
//constantString += "and carriage"
print("\(constantString)")


//8:使用字符(Working with Characters)
//for-in循环遍历字符串中的字符
for character in "Dog!?".characters {
    print(character)
}

//9:创建字符常量
let markCharacter:Character = "!"
let catCharacter:[Character] = ["C","A","T","?"]
let catString = String(catCharacter)
print(catString + String(markCharacter))

//10:字符串插值 (String Interpolation)
let multiplier = 3
let message = "\(multiplier) times 2.5 is \(Double(multiplier) * 2.5)"
print("\(message)")

//11:计算字符数量
let count = message.characters.count
print(count)

//注意在 Swift 中,使用可拓展的字符群集作为 Character 值来连接或改变字符串时,并不一定会更改字符串的字 符数量。(因为字符是 e? ,而不是 e)

//12:访问字符串 (Accessing and Modifying a String)
let greeting = "Niki liushuang!"
print(greeting[greeting.startIndex])  //N
//print(greeting[greeting.endIndex])//崩溃 EXC_BAD_INSTRUCTION (EXCI386)
print(greeting.endIndex.predecessor()) //14
print(greeting.startIndex.successor()) //1
let index = greeting.startIndex.advancedBy(6)
print(index)                           //6

for index in greeting.characters.indices {
    print("\(greeting[index]) " ,terminator: " ")
}//以“ ”结尾,打印输出全部字符



//13:插入字符和字符串
var welcome = "welcome"
welcome.insert("\n", atIndex: welcome.startIndex)
welcome.insert("!", atIndex: welcome.endIndex)
print(welcome)

welcome.insertContentsOf("to China".characters, at: welcome.endIndex.predecessor())
print(welcome)



//14:删除字符和字符串
welcome.removeAtIndex(welcome.startIndex.successor())
print(welcome)
welcome.removeAtIndex(welcome.endIndex.predecessor())
print(welcome)

let range = welcome.startIndex.advancedBy(3)..<welcome.endIndex//闭区间的表达方式
welcome.removeRange(range)
print(welcome)

welcome.removeAll()
print(welcome)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值