Swift学习笔记(十四)——字符,常量字符串与变量字符串

在学习Java过程中,字符串碰到过String和StringBuffer,其中前者是不可变的,不能对字符串进行修改;后者是可变的,可以不断修改。来到Swift中,对字符串的定义变的更加简单。

(1)概述

Swift中,用let 声明的是字符串常量,不能进行修改。用var声明的是字符串变量,可以修改。通过代码来演示。

let str1 = "Hello1"
var str2 = "Hello2"

str1 = "world1"//报错:cannot assign to 'let' value 'str1'
str2 = "world2"

str1 += "world1"//报错:binary operator '+=' cannot be applied to two String operands str1 += 'world1'
str2 += "world2"

由代码可见,let声明的字符串不可变,var声明的字符串可变。

(2)字符串初始化

Swift字符串有两种初始化方法,第一种方法是赋空值;第二种是用String()类实例化。代码如下:

var str3=""
var str4 = String()

(3)字符串为空判断

有时候代码中需要判断一个字符串是否为空,可以使用isEmpty()方法。代码及输出如下:

var str1 = "Hello"
let str2 = "Hello"
var str3 = ""
var str4 = String()

str1.isEmpty  //输出false
str2.isEmpty  //输出false
str3.isEmpty  //输出true
str4.isEmpty  //输出true

(4)使用for-in循环遍历字符串

var str1 = "Hello"
//使用for-in 循环遍历字符串
for index in str1{

    println(index)
}

输出结果如下:

(5)Swift字符

同C语言一样,在Swift中也有字符的概念,使用关键字Character声明。代码如下:

var ch:Character = "h"
println(ch)

结果输出如下:

其中字符串还可以使用append()方法添加一个字符,但是不能使用append()方法添加一个String。代码如下:

var ch:Character = "h"

var str1:String = "Hello"
var str2:String = "World"

str1.append(ch)//通过
str1.append(str2)//报错:Cannot invoke 'append' with an argument list of type '(String)'

输出结果如下:

(6)字符串中+=运算符的使用

在字符串中有一个重要的运算符:+=,可以用来拼接两个字符串。但是不能拼接字符。

代码如下:

var ch:Character = "h"

var str1:String = "Hello"
var str2:String = "World"

str1 += str2//通过,可以连接两个字符串
str1 += ch//报错如下图:

最后String拼接后输出结果:

(7)计算字符串长度

我使用的Xcode版本是最新的Version 6.4(6E35b),可能在不同的Xcode版本和Swift版本中该方法会有所不同。网上说可以使用countElements(str),来计算字符串长度,但是亲测在我的这个版本中不适用,Xcode6.4只能使用count(str)方法来计算String长度。并且count()不能计算字符Character的 长度,因为字符默认是1,不需要计算。大家可以在自己的环境上尝试countElements(),count() 两个方法。

代码如下:

var str1:String = "Hello"
var str2:String = "你好吗"

count(str1)
count(str2)

输出结果如下:

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-06 09:49:29

Swift学习笔记(十四)——字符,常量字符串与变量字符串的相关文章

Swift学习笔记十四:构造(Initialization)

类和结构体在实例创建时,必须为所有存储型属性设置合适的初始值.存储型属性的值不能处于一个未知的状态. 你可以在构造器中为存储型属性赋初值,也可以在定义属性时为其设置默认值.以下章节将详细介绍这两种方法. 注意: 当你为存储型属性设置默认值或者在构造器中为其赋值时,它们的值是被直接设置的,不会触发任何属性观测器(property observers). 一.基本语法 class Human{ var name :String init(){ name = "human" } init(n

Swift学习笔记十四

Deinitialization 当类的实例对象即将要被释放时,会立即调用deinitializer,通过deinit关键字来定义deinitializer,和initializer一样,它也只存在于类类型上. 当实例对象不再有用时,Swift会自动释放该对象.Swift通过自动引用计数(ARC)来管理实例内存.通常情况下,对象被释放时,你并不需要做特别的清理,但是,如果你操作了你自己的资源,可能需要做一些额外的清理工作.比如,你在某个类中打开了一个文件,并往里写入了数据,那么你需要在这个类的实

Swift学习笔记十:属性

1.存储属性       1. 作为特定类或结构实例的一部分,存储属性存储着常量或者变量的值.存储属性可分为变量存储属性(关键字var描述)和常量存储属性(关键字let描述). struct student{ let name = "" var score = 0 } let a = student(name:"小笨狼",score:96)           注意:                ① 定义储存属性时,需要为每一个属性定义一个默认值.在初始化的时候,

Swift学习笔记十二:下标脚本(subscript)

下标脚本就是对一个东西通过索引,快速取值的一种语法,例如数组的a[0].这就是一个下标脚本.通过索引0来快速取值.在Swift中,我们可以对类(Class).结构体(structure)和枚举(enumeration)中自己定义下标脚本的语法 一.常规定义 class Student{ var scores:Int[] = Array(count:5,repeatedValue:0) subscript(index:Int) -> Int{ get{ return scores[index];

Swift 学习笔记十五:扩展

扩展就是向一个已有的类.结构体或枚举类型添加新功能(functionality).扩展和 Objective-C 中的分类(categories)类似.(不过与Objective-C不同的是,Swift 的扩展没有名字.) Swift 中的扩展可以: 1.添加计算型属性和计算静态属性 2.定义实例方法和类型方法 3.提供新的构造器 4.定义下标 5.定义和使用新的嵌套类型 6.使一个已有类型符合某个协议 一.扩展属性,构造器,方法 class Human{ var name:String? va

laravel3学习笔记(十四)

原作者博客:ieqi.net ==================================================================================================== 运行时配置 在 Laravel3 中很多地方我们都可以看到“约定大于配置”的影子,我本人也很喜欢这种工程哲学尤其是在框架领域,当然这并不能代替所有的配置.我们知道 Laravel3 中,主要配置都写在 application/config 文件夹下,在应用逻辑中,往往

Swift学习笔记(二)——常量与变量

这篇博客将会学习到Swift中的常量Constants和变量Variable.这是学习语言的基础.其中可以看到Swift每句后面基本都是没有:分号的,如果有加:分号的习惯,也可以加上. (1)常量声明:Swift将会使用关键字let来声明一个常量.定义常量之后不能再进行修改,否则会报错. let maxNum = 100 maxNum = 200   //这里会报错,常量值不能进行修改: (2)变量声明:Swift将会使用关键字var来声明一个变量,变量的值可以改变. var minNum =

Java基础学习笔记十四 常用API之基本类型包装类

基本类型包装类 Java中有8种基本的数据类型,可是这些数据是基本数据,想对其进行复杂操作,变的很难.怎么办呢?在实际程序使用中,程序界面上用户输入的数据都是以字符串类型进行存储的.而程序开发中,我们需要把字符串数据,根据需求转换成指定的基本数据类型,如年龄需要转换成int类型,考试成绩需要转换成double类型等.那么,想实现字符串与基本数据之间转换怎么办呢?Java中提供了相应的对象来解决该问题,基本数据类型对象包装类:java将基本数据类型值封装成了对象.封装成对象有什么好处?可以提供更多

Swift学习笔记十

枚举 一个枚举为一组相关联的值定义一个通用类型,并且让你可以在代码中类型安全地操作这些值. C中的枚举将关联的名字指派给一系列整型值.Swift中的枚举类型更为活泼,并不需要为每个成员指定值,如果指定值(raw value),这个值可以是String或者Character.整型或者浮点型. 此外,每个枚举成员可以指定不同数量的任意类型的关联值存储起来.这有点像其他语言里的联合.你可以定义一个普通的一系列关联值的集合作为一个枚举的一部分,每个枚举都可以有一个适当类型的不同集合. 在Swift中,枚

Swift学习笔记十六:协议

Protocol(协议)用于统一方法和属性的名称,而不实现不论什么功能. 协议可以被类.枚举.结构体实现.满足协议要求的类,枚举,结构体被称为协议的遵循者. 遵循者须要提供协议指定的成员,如属性,方法,操作符,下标等. 一.协议的基本的语法 咱们还是先上代码吧 protocol Human { var name:String{ get set } var isMan:Bool{set get} class var isUsable:Bool { set get } //类成员.表示这个类是否可用