窥探Swift之字符串(String)

  之前总结过Objective-C中的字符串《Objective-C精选字符串处理方法》,学习一门新语言怎么能少的了字符串呢。Swift中的String和Objective-C语言中NSString还是区别不小的,Swift中的String又回归了正常状态,使用起来更为方便快捷。本篇博客的主题就是Swift中的字符串类型String,String在Swift中让人省心了不少。今天这篇博客就好好的认识一下Swift中的String。

  一、字符串拷贝

    在Swift中的字符串拷贝直接可以使用=号来操作,这个等号不是指针之间的赋值这么简单。如果将字符串A的值赋给字符串B,那么A和B的的内存地址是不同的,也就是字符串A和字符串B有各自的内存空间。下面的实例就给我们展示了上面的说法:

    1.首先写个输入函数,该函数用于输出字符串的内存地址,代码如下:

 

//打印变量地址的函数
func printVarAddress(tempString: String){

    var address = String(format: "%p", tempString)

    println(address)

}

 

 

    2. 创建一个字符串变量并赋上初始值,然后再定义一个变量,把上一个变量的值通过=号来赋值给这个新的变量,并调用上面的方法来打印这两个变量的内存地址,如下代码所示:

var strTemp = "Ludashi"

var strTempCopy = strTemp

printVarAddress(strTemp)  //-- 0x100525d50
printVarAddress(strTempCopy) //-- 0x1005268a0

    由上面打印的变量地址可以看出,每个变量都有自己的存储地址,也就是对应着OC中的深拷贝。

 

  二、字符串连接

    在Swift中字符串的连接就简单了许多,一个+号搞定,再也不用NSStringFormat了,下面的代码是在Swift中进行字符串连接所使用的方式,和其他编程语言如PHP等是一样一样的。废话少说直接上代码。

//=============字符串连接==============
var myFirstName = "Li"

var mySecondName = "Zelu"

var myName = mySecondName + myFirstName

println(myName) // -- ZeluLi

三、字符串遍历

    在Swift中的字符串是可以使用for - in 来直接进行遍历的,如下所示:

//==============字符串遍历==========
var searchString = "Ludashi"

for tempChar in searchString {
    println(tempChar)
}

 

  四、字符串的比较

    字Swift中的字符串间的比较不是使用isEqualToString方法,直接使用==和!=号就可以搞定,是不是瞬间简单了不少呢。应注意的是,在Swift中的Bool类型的值不再是OC中的Yes Or No了,而是false Or ture了。下面的代码段是对两个字符串通过==和!=来进行比较的。

//字符串比较==与!=
var myNameTemp = "lizelu"

var myBlogName = "ludashi"
var boolOne = myNameTemp == myBlogName  // -- false

var boolTwo = myNameTemp != myBlogName  // -- true

println(boolOne)

println(boolTwo)

 

  五、Swift中常见字符串函数

    1、使用hasPrefix和hasSuffix来判断一个字符串是否为另一个字符串的前缀或者后缀

//判断前缀还是后缀
var isHasPrefixOrSuffix = "我是lizelu"

var isPrefix =  isHasPrefixOrSuffix.hasPrefix("我")
println(isPrefix)   // -- ture

var isSuffix =  isHasPrefixOrSuffix.hasSuffix("zelu")
println(isSuffix)   // -- ture

 

    2.字符串长度

    在OC中获取字符串长度是使用length, 而Swift中则是使用count()全局函数,如下:

//字符串长度
var strLenght = count(isHasPrefixOrSuffix)
println(strLenght)  // -- 8 --

 

    3.字符串插值

    在OC中如果你想往一个字符串中插入一个值的话,那么就得使用字符串的格式化函数了,而在Swift中则使用\()就可以了,具体使用方式如下所示:

//字符串插值
var insertToStringValue = 1010101

var strInserReaultValue = "二进制编码\(insertToStringValue)"

println(strInserReaultValue)  //二进制编码1010101

 

    4.调用NSString方法

    在Swift中如果想调用NSString所特有的方法时,该怎么办呢?那么就使用as关键字来转换一下类型吧,就是把String类型通过as操作,转换成NSString类型,然后在调用NSString相应的方法(比如要获取一个字符串指定范围内的字符串时,使用NSString的方法就会更为简单一些)。

//String转成NSSting调用NSSting的方法
var stringToNSString = "SwiftWithMe"

var strNs: NSString = "aaa"

strNs.length  // -- 3 --

//就可以掉哟过NSSting的各工种方法了
var strLength = (stringToNSString as NSString).length  // -- 11 --

  今天有关Swift字符串的东西就先到这儿,以后字啊使用Swift做开发实例时,用到Swift字符串时再做补充。

时间: 2024-09-15 04:16:06

窥探Swift之字符串(String)的相关文章

窥探Swift编程之错误处理与异常抛出

在Swift 2.0版本中,Swift语言对其错误处理进行了新的设计,当然了,重新设计后的结果使得该错误处理系统用起来更爽.今天博客的主题就是系统的搞一下Swift中的错误处理,以及看一下Swift中是如何抛出异常的.在编译型语言中,错误一般分为编译错误和运行时错误.我们平时在代码中处理的错误为运行时错误,我们对异常进行处理的操作的目的是为了防止程序出现错误而导致其他的副作用,比如用户数据未保存等等. 在今天的博客中,先给出主动产生异常的几种情况,然后再给出如何处理被动异常. 一.主动退出程序的

窥探Swift编程中的错误处理与异常抛出_Swift

在Swift 2.0版本中,Swift语言对其错误处理进行了新的设计,当然了,重新设计后的结果使得该错误处理系统用起来更爽.今天的主题就是系统的搞一下Swift中的错误处理,以及看一下Swift中是如何抛出异常的.在编译型语言中,错误一般分为编译错误和运行时错误.我们平时在代码中处理的错误为运行时错误,我们对异常进行处理的操作的目的是为了防止程序出现错误而导致其他的副作用,比如用户数据未保存等等. 在今天的文章中,先给出主动产生异常的几种情况,然后再给出如何处理被动异常. 一.主动退出程序的几种

窥探Swift编程之强大的Switch

之前初识Swift中的Switch语句时,真的是让人眼前一亮,Swift中Switch语句有好多特有而且特好用的功能.说到Switch, 只要是写过程序的小伙伴对Switch并不陌生.其在程序中的出镜率还是比较高档.Switch属于程序的分支语句,Switch的功能便于处理多个分支的较为复杂点的逻辑分支.能用Switch实现的代码都可以使用多个if-else分支语句进行替换. 今天这篇博客就是要看一下Swift中的Switch的不同之处,来总结一下Switch不同的特性.在Swift语言中的Sw

窥探Swift之类的继承与类的访问权限

上一篇博客<窥探Swift之别具一格的Struct和Class>的博客可谓是给Swift中的类开了个头.关于类的内容还有很多,今天就来搞一下类中的继承以及类的访问权限.说到类的继承,接触过面向对象编程(OOP)的小伙伴并不陌生,继承就是OOP编程中几大特征之一,所以还是有必要把类的继承拎出来聊聊的.说到访问权限,这个在OOP编程中也是不可或缺的.如果你接触过其他OOP的语言,你应该对private, public, protected并不陌生.在Swift这么面向对象的编程语言中,也有类似的概

窥探Swift之协议(Protocol)和委托代理(Delegate)回调的使用

协议与委托代理回调在之前的博客中也是经常提到和用到的在<Objective-C中的委托(代理)模式>和<iOS开发之窥探UICollectionViewController(四) --一款功能强大的自定义瀑布流>等博客内容中都用到的Delegate回调.说到协议,在Objective-C中也是有协议的,并且Swift中的协议和Objc中的协议使用起来也是大同小异的,在Java等现代面向对象编程语言中有接口(Interface)的概念,其实和Swift中或者Objc中的Protoco

掌握 Swift 的字符串细节

本文讲的是掌握 Swift 的字符串细节, 原文地址:Mastering Swift: essential details about strings 原文作者:Dmitri Pavlutin 译文出自:掘金翻译计划 译者:Tuccuay 校对者:oOatuo , lsvih 掌握 Swift 的字符串细节 String 类型在任何编程语言中都是一个重要的组成部分.而用户从 iOS 应用的屏幕上能读取到最有效的信息也来自文本. 为了触及更多的用户,iOS 应用必须国际化以支持大量现代语言.Uni

窥探Swift之基本数据类型

在上一篇博客"窥探Swift编程之在Playground上尽情的玩耍"中介绍了如何使用Playground来学习Swift语言.本篇博客就使用Playground来窥探Swift语言.千里之行始于足下,当然了,除非你是坐的高铁或者飞机.还是那句话从基础开始吧,本篇博客主要介绍一下Swift的基本数据类型.Swift中的数据类型可谓是百花齐放百家争鸣,下面就来窥探一下Swift中的基本数据类型. 一.Swift中的变量和常量 1.关键字"let" 常量,顾名思义,常量

ios-IOS SWIFT 判断字符串是否含有字母

问题描述 IOS SWIFT 判断字符串是否含有字母 iOS 如和判断字符串中是否含有字母,用swift写.网上给的没弄出来,希望小伙伴们能给个好的例子 解决方案 判断是否包含字母 let string = "输入检测字符"; for char in string.utf8 { if (char > 64 && char < 91) || (char > 96 && char < 123) { print("字符串中包含

C++: 把文本文件(txt)的所有内容读入字符串(string), 最高效的方法

代码: /* * main.cpp * * Created on: 2014年6月17日 * Author: Spike */ /*eclipse cdt, gcc 4.8.1*/ #include <iostream> #include <fstream> #include <string> #include <cerrno> std::string get_file_contents(const char *filename) { std::ifstre