美文网首页
Swift--原生字符串

Swift--原生字符串

作者: 优雅的步伐 | 来源:发表于2019-08-04 22:15 被阅读0次
  • 字符
  • 创建字符串
  • 字符串的拼接
  • 字符串插入、删除和替换
  • 字符串比较

字符

在Java、C、C++和Objective-C等大多数语言中,字符是放在单引号(')之间的。而在Swift语言中,我们不能使用单引号方式,必须使用双引号(")把字符括起来。而Swift中的字符串也使用双引号(")把字符括起来。

Unicode编码

Unicode编码可以有单字节编码、双字节编码和四节编码,它们的表现形式是\u{n}, 其中n为1-8个十六进制数。
Unicode编码可以在http://vazor.com/unicode/网站查询字符与编码的对应关系。

下面的输出结果是一样的。都是ଖ

var str3 = "ଖ"
print(str3)

var str4 = "\u{0B16}"
print(str4)
转义符
字符表示 Unicode编码 说明
\t \u{0009} 水平制表符tab
\n \u{000a} 换行
\r \u{000d} 回车
\" \u{0022 双引号
\' \u{0027} 单引号
\\ \u{005c} 反斜线

/**
 转义字符
 **/
let specialCharTab1 = "Hello\tWorld."
print("specialCharTab1:\(specialCharTab1)")

let specialCharNewLine = "Hello\nWorld."
print("specialCharTab1:\(specialCharNewLine)")

let specialCharReturn = "Hello\rWorld."
print("specialCharTab1:\(specialCharReturn)")

let specialCharQuotationMark = "Hello\"World\"."
print("specialCharTab1:\(specialCharQuotationMark)")

let specialCharApostrophe = "Hello\'World\'."
print("specialCharTab1:\(specialCharApostrophe)")

let specialCharReverseSolidus = "Hello\\World."
print("specialCharTab1:\(specialCharReverseSolidus)")

打印结果为:


image.png

创建字符串

在Swift中字符串的类型是String, String是一个结构体。
提示
在OS X和iOS应用开发中有一个基础框架———Foundation框架,这个框架中也有字符串类型NSString。NSString是一个类,而非结构体。因此提到字符串事应该明确是Swift中原生字符串String, 还是Foundation框架中的字符串NSString。为了能够使它们互相转化,苹果公司提供一种 "零开销桥接技术"使得互相转化更加低成本、更加简单。

  /**
   字符串的拼接
   **/

let str5 = "Hello world!"
let count = str5.count
print(count)

let 🌍 = "🐶🐎🐱🐭🐰🐻🐼🐂🐫🐛🐝"
print("已经上传的小动物数: \(🌍.count)")

let 熊 = "🐻"
let 猫 = "🐱"
let 🐼 = 熊 + 猫 //字符串拼接

//声明空字符串
let emptyString = ""
let emptyString2 = String() //也可以调用String的结构体的构造函数来创建一个空的字符串

注意:
字符串的类型是String类型,String类型是一个结构体,结构体的实例化和创建它的实例的方式就是加(), 加括号其实就是调用它的结构体的构造函数,也就是通过它的构造函数来创建一个字符串,只不过是创建了一个空的字符串。

字符串的拼接

可变字符串

在Swift中通过let声明的字符串常量是不可变字符串,var声明的字符串常量是可变字符串。

提示:Foundation框架中也有可变字符串类型是NSMutableString, NSMutableString继承于NSString。

字符串拼接
  • String字符串之间的拼接可以使用+ 和+=运算符。
  • String字符串与字符拼接可以使用String的append(_:Character)方法。

/**
 字符串的拼接
 **/

//+和+= 只能针对于String类型的追加
var livingThings = "🐶🐎🐱🐭🐰🐻🐼🐂🐫🐛🐝"
livingThings = livingThings + "👦"   //“👦”是字符串类型String
livingThings += "👧"

   //Character即字符不能使用+= 或者+ 来拼接
  //append只能针对于字符类型的追加,在尾部加上
var flower: Character = "🌺"
livingThings.append(flower)
print("生物数: \(livingThings.count)")

let number = 9
let total = "\(number)加10等于\(Double(number) + 10)"

字符串的插入,删除和替换

/**
字符串插入、删除和替换
 **/

var str6 = "Objective-C and Swift"
print("原始字符串:\(str6)")

//插入字符
str6.insert(".", at: str6.endIndex)
print("插入.字符后:\(str6)")

//访问其结束前一个字符,在Swift3.0 predecessor使用以下代替:
str6.remove(at: str6.index(before: str6.endIndex))
print("删除.字符后:\(str6)")

//访问其开始后一个字符, 在Swift3.0 advancedBy使用以下代替:
var startIndex = str6.startIndex
var endIndex = str6.index(str6.startIndex, offsetBy:9)
var range = startIndex...endIndex
//删除范围
str6.removeSubrange(range)
print("删除范围后:\(str6)")


//访问其开始后一个字符, 在Swift3.0 successor使用以下代替:
startIndex = str6.startIndex
endIndex = str6.index(after: str6.startIndex)
range = startIndex...endIndex
//替换范围
str6.replaceSubrange(range, with: "C++")
print("替换范围后:\(str6)")

打印结果如下:


image.png

字符串的比较

字符串类型与整型和浮点型一样,都可以进行相等以及大小的比较,比较的依据是Unicode编码值大小。比较相等运算符==或!=。

提示Swift字符Character和字符串String都是结构体类型,只能使用==或!=比较是否相等或不等。而Foundation框架中的NSString字符串的比较是否相等或不等,则需要使用===或!==运算符。

/**
 字符串的比较
 **/

let 熊1 = "🐻"
let 猫1 = "🐱"

if 熊1 > 猫1 {
    print("🐻 大于 🐱")
}else {
    print("🐻 小于 🐱")
}

let 🐼1 = 熊1 + 猫1
if 🐼1 == "🐻🐱" {
    print("🐼1 是🐻🐱")
}else {
    print("🐼1 不是🐻🐱")
}

let emptyString3 = ""
let emptyString4 = String()

  if emptyString3 == emptyString4 {
        print("emptyString3 与 emptyString4 相等")
    }else {
        print("emptyString3 与 emptyString4 不bu相等")
    }

let emptyString5: NSString = ""
let emptyString6: NSString = ""

//NSString与String可以相互转换 即 “零开销桥接技术”, 下面要是    写成"==" 就是利用这种技术,正常情况下应该写成“===”
if emptyString5 === emptyString6 {
    print("emptyString5 与 emptyString6 相等")
}else {
  print("emptyString5 与 emptyString6 不bu相等")
}

var aa = "aa"
var bb = "bb"
if aa > bb {
    print("aa > bb")
}else {
  print("aa < bb")
}

打印结果如下:


image.png

相关文章

  • Swift--原生字符串

    字符 创建字符串 字符串的拼接 字符串插入、删除和替换 字符串比较 字符 在Java、C、C++和Objectiv...

  • Swift--原生集合类型

    数组 字典 Set集合 数组 数组:是一串有序的由相同类型元素构成的集合。数组中的集合元素是有序的,可以重复出现。...

  • Swift--字符串--02

    字符串基础 字符串在OC与Swift中的区别:在OC中字符串类型是NNString,在Swift中字符串类型是St...

  • The Awesome Raywenderlich.com: 经

    Swift--弹性动画--Swift Swift--CALayer 教程: Getting Started超棒的源...

  • swift--字符串之子字符串

    字符串切片高效原因 String有一个特定的SubSequence类型,叫做Substring。Substring...

  • c++ 7、字符串

    1、字符串常用函数(原生) 2、字符串常用函数(扩展)

  • 正则表达式 py

    Python中字符串前面加上 r 表示原生字符串

  • 100个原生JavaScript使用功能代码片段

    100个原生JavaScript使用功能代码片段 目录 1、原生JavaScript实现字符串长度截取2、原生Ja...

  • Go语言之字符串八

    字符串在 Go 语言中以原生数据类型出现,使用字符串就像使用其他原生数据类型(int、bool、float32、f...

  • 基础类型

    String 转义字符串 vs 原生字符串 转义字符串与java字符串类似,例如"hello", 通过一对双引号表...

网友评论

      本文标题:Swift--原生字符串

      本文链接:https://www.haomeiwen.com/subject/hvsprctx.html