Swift语言中字符串相关的基本概念解析

Swift 的字符是一个单一的字符串文字并且是字符数据类型。下面是一个简单的例子,使用了两种字符常量:

代码如下:

import Cocoa

let char1: Character = "A"
let char2: Character = "B"

println("Value of char1 \(char1)")
println("Value of char2 \(char2)")

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

Value of char1 A
Value of char2 B

如果尝试存储多个字符到字符类型的变量或常量,那么 Swift 是不会允许的。试着键入下面的示例到 Swift Playground,在编译之前,就已经会得到一个错误。

代码如下:

import Cocoa

// Following is wrong in Swift
let char: Character = "AB"

println("Value of char \(char)")

空字符变量
不可能创建一个空的字符变量或常量,这将有空值。下面的语法是不可能的:

代码如下:

import Cocoa

// Following is wrong in Swift
let char1: Character = ""
var char2: Character = ""

println("Value of char1 \(char1)")
println("Value of char2 \(char2)")

从字符串访问字符
当讨论 Swift 的字符串,字符串表示的字符值按指定顺序的集合。因此,我们可以从给定字符串通过 for-in 循环来遍历字符串以访问单个字符:

代码如下:

import Cocoa

for ch in "Hello" {
   println(ch)
}

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

H
e
l
l
o

使用字符连接字符串
下面的例子演示了 Swift 字符如何与字符串连接。

代码如下:

import Cocoa

var varA:String = "Hello "
let varB:Character = "G"

varA.append( varB )

println("Value of varC  =  \(varA)")

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

Value of varC Hello G

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

创建字符串
可以通过使用一个字符串文字或创建String类的一个实例来创建一个字符串,如下:

代码如下:

import Cocoa

// String creation using String literal
var stringA = "Hello, Swift!"
println( stringA )

// String creation using String instance
var stringB = String("Hello, Swift!")
println( stringB )

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

Hello, Swift!
Hello, Swift!

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

代码如下:

import Cocoa

// Empty string creation using String literal
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

字符串常量
可以指定字符串是否可以修改(或突变),通过将其分配给一个变量,或者通过将其使用 let 关键字分配为常量,如下图所示:

代码如下:

import Cocoa

// stringA can be modified
var stringA = "Hello, Swift!"
stringA + = "--Readers--"
println( stringA )

// stringB can not be modified
let stringB = String("Hello, Swift!")
stringB + = "--Readers--"
println( stringB )

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

Playground execution failed: error: <EXPR>:10:1: error: 'String' is not convertible to '@lvalue UInt8'
stringB + = "--Readers--"

字符串插值
字串转换符号是一种通过包括字符串文字内的值来构造的常量,变量,文本和表达式来组合一个新的字符串值。

每个项目(变量或常量),插入到字符串被包裹在一对括号内, 一个反斜杠前缀。下面是简单的例子:

代码如下:

import Cocoa

var varA   = 20
let constA = 100
var varC:Float = 20.0

var stringA = "\(varA) times \(constA) is equal to \(varC * 100)"
println( stringA )

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

20 times 100 is equal to 2000.0

字符串连接
可以使用+运算符来连接两个字符串或字符串和字符,或两个字符。下面是一个简单的例子:

代码如下:

import Cocoa

let constA = "Hello,"
let constB = "World!"

var stringA = constA + constB

println( stringA )

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

Hello,World!

字符串长度
Swift 中字符串没有 length 属性,但可以使用全局count()函数来计算字符串中的字符数。下面是一个简单的例子:

代码如下:

import Cocoa

var varA   = "Hello, Swift!"

println( "\(varA), length is \(count(varA))" )

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

Hello, Swift!, length is 13

字符串比较
可以使用 == 操作符两个比较两个字符串变量或常量。下面是一个简单的例子:

代码如下:

import Cocoa

var varA   = "Hello, Swift!"
var varB   = "Hello, World!"

if varA == varB {
   println( "\(varA) and \(varB) are equal" )
} else {
   println( "\(varA) and \(varB) are not equal" )
}

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

Hello, Swift! and Hello, World! are not equal

Unicode字符串
可以通过遍历在 UTF8 和 UTF16 属性访问字符串的 UTF-8 和 UTF-16 表示,如下面的示例:

代码如下:

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
(0)

相关推荐

  • Swift算法实现逐字翻转字符串的方法示例

    前言 翻转字符串在字符串算法中算是比较常见的,而且被很多公司用作笔试题."逐字翻转字符串"是翻转字符串的翻版,也是之前Google的面试题,原题是这样的: Given an input string, reverse the string word by word. A word is defined as a sequence of non-space characters. The input string does not contain leading or trailing

  • 详解Swift中的Characters字符类型与String字符串类型

    一.引言 Swift中提供了String类型与Characters类型来处理字符串和字符数据,Swift中的String类型除了提供了许多方便开发者使用的方法外,还可以与Foundation框架的NSString类进行转换,使用起来十分方便. 二.String基础 在Swift中,使用双引号来定义字符串,开发者可以通过如下代码来创建一个字符串常量: let str = "Hello, playground" 可以通过下面两种方式来创建空字符串: let str1 = "&qu

  • Swift心得笔记之字符串

    字符串 简介 String 中的字符串是值类型,传递的时候会对值进行拷贝,而 NSString 的字符串传递则是引用.我们可以用 for in 遍历字符串: 复制代码 代码如下: var a : String = "a" for c in "Hello" {     println(c) } 可以通过 countElements 计算字符串的字符数量: 复制代码 代码如下: countElements("1234567") // 7 不过要注意的

  • Swift教程之字符串和字符详解

    一个字符串String就是一个字符序列,像"hello,world","albatross"这样的.Swift中的字符串是用String关键词来定义的,同时它也是一些字符的集合,用Character定义. Swift的String和Character类型为代码提供了一个快速的,兼容Unicode的字符解决方案.String类型的初始化和使用都是可读的,并且和C中的strings类似.同时String也可以通过使用+运算符来组合,使用字符串就像使用Swift中的其他基

  • Swift语言中字符串相关的基本概念解析

    Swift 的字符是一个单一的字符串文字并且是字符数据类型.下面是一个简单的例子,使用了两种字符常量: 复制代码 代码如下: import Cocoa let char1: Character = "A" let char2: Character = "B" println("Value of char1 \(char1)") println("Value of char2 \(char2)") 当上述代码被编译和执行时,它产

  • Swift语言中的函数学习教程

    函数是一个组织在一起语句集合,以执行特定任务.Swift 函数类似于简单 C 函数以及复杂的 Objective C 语言函数. 它使我们能够通过函数调用内部的局部和全局参数值. 像其他任何语言一样 swift 函数也遵循相同的步骤. 函数声明:它告诉编译器有关的函数的名称,返回类型和参数. 函数定义:它提供函数的实际主体. Swift 函数包含参数类型和返回类型. 函数定义 在Swift 语言中函数是由 "func" 关键字来定义.当一个新定义函数时,它可能需要一个或几个值作为函数输

  • 深度解密Go语言中字符串的使用

    目录 Go 字符串实现原理 字符串的截取 字符串和切片的转换 字符串和切片共享底层数组 什么是万能指针 字符串和其它数据结构的转化 整数和字符串相互转换 Parse 系列函数 Format 系列函数 小结 Go 字符串实现原理 Go 的字符串有个特性,不管长度是多少,大小都是固定的 16 字节. package main import (     "fmt"     "unsafe" ) func main() {     fmt.Println(         

  • R语言中字符串的拼接操作实例讲解

    在R语言中 paste 是一个很有用的字符串处理函数,可以连接不同类型的变量及常量. 函数paste的一般使用格式为: paste(..., sep = " ", collapse = NULL) 其 中-表示一个或多个R可以被转化为字符型的对象:参数sep表示分隔符,默认为空格:参数collapse可选,如果不指定值,那么函数paste的返回值是自变量之间通过sep指定的分隔符连接后得到的一个字符型向量:如果为其指定了特定的值,那么自变量连接后的字符型向量会再被连接成一个字符串,之间

  • C语言中字符串与各数值类型之间的转换方法

    C语言的算法设计中,经常会需要用到字符串,而由于c语言中字符串并不是一个默认类型,其标准库stdlib设计了很多函数方便我们处理字符串与其他数值类型之间的转换. 首先放上一段展示各函数使用的代码,大家也可以copy到自己的机器上运行观察 #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int num=183; char str[3]; //itoa函数将整型转换为字符串数值类型 it

  • R语言中因子相关知识点详解

    因子是用于对数据进行分类并将其存储为级别的数据对象. 它们可以存储字符串和整数. 它们在具有有限数量的唯一值的列中很有用. 像"男性","女性"和True,False等.它们在统计建模的数据分析中很有用. 使用factor()函数通过将向量作为输入创建因子. 例 # Create a vector as input. data <- c("East","West","East","North

  • c语言中字符串与字符串数组详解

    目录 字符串 字符串输出 输入字符串 字符串常用方法 字符串数组 总结 字符串 用双引号引起来的就是字符串,字符串由字符组成 字符串使用%s格式化输出 字符串以\0结尾,没有\0就不是字符串 只要是用双引号括起来的都是字符串 字符串的本质就是数组 注意: 字符串变量和普通的字符数组有一定的区别,C语言规定,字符串必须以\0结尾(作为字符串的结束符号),所以字符串变量的元素个数比字符数组的元素多一个\0 #include <stdio.h> int main(int argc, const ch

  • c语言中字符串分割函数及实现方法

    1.问题引入 自己在写一个linux下的模拟执行指令的时候,遇到了输入"cat a.c",要将该字符串分解成cat和a.c两个单独的字符串,虽然知道有strtok的存在,但是想自己尝试写一下,于是就自己写了一个,不过总是遇到这样或那样的问题,虽然最后调通了,不过确浪费了不少时间:后来作业交上去以后又仔细阅读了strtok函数,发现原来linux下已经改成strsep,所有在这里就写一下自己所走的过程. 2.自己写的字符串分割函数:用于分割指令,比如cat a.c最后会被分割成cat和a

  • C语言中字符串实现正序与逆序实例详解

    C语言中字符串实现逆序实例详解 字符串逆序和正序的实现代码: #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <malloc.h> #include <string.h> /*定义*/ typedef struct node { char c; struct node *llink,*rlink; }stud; /*建立链表*/ stud * creat(voi

  • Java语言中的自定义类加载器实例解析

    本文研究的主要是Java语言中的自定义类加载器实例解析的相关内容,具体如下. 自己写的类加载器 需要注意的是:如果想要对这个实例进行测试的话,首先需要在c盘建立一个c://myjava的目录.然后将相应的java文件放在这个目录中.并将产生的.clas文件放在c://myjava/com/lg.test目录下,否则是找不到的.这是要注意的.. class FileClassLoader : package com.lg.test; import java.io.ByteArrayOutputSt

随机推荐