窥探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 = 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字符串时再做补充。
窥探Swift之字符串(String)的更多相关文章
- Swift:字符串(String)分割之Substring优雅转换
认识Substring类型 这是一个全新的类型,看类名像是String的子类,但是大家千万别被误导了,Substring并不是String的子类,这是两个不同的类型,但是它们都继承了StringPro ...
- Swift的字符串String是值类型
根据<The Swift Programming Language>中文版基于Xcode6.1的文章描述: Swift的 String 类型是值类型.如果创建了新的字符串,那么当其进行常量 ...
- 窥探Swift系列博客说明及其Swift版本间更新
Swift到目前为止仍在更新,每次更新都会推陈出新,一些Swift旧版本中的东西在新Swift中并不适用,而且新版本的Swift会添加新的功能.到目前为止,Swift为2.1版本.去年翻译的Swift ...
- 汇编窥探Swift String的底层
String(字符串),是所有编程语言中非常重要的成员,因此非常值得去深入研究.众所周知,字符串的本质是字符序列,由若干个字符组成.比如字符串 "iOS" 由 'i'.'O'.'S ...
- iOS -Swift 3.0 -String(字符串常规用法)
// // ViewController.swift // Swift-String // // Created by luorende on 16/9/10. // Copyright © 2016 ...
- [Swift]字符串(String类、NSString类)常用操作
NS是Cocoa类对象类型的前缀,来源于乔布斯建立的另一家公司--NeXTNSString的使用方法,和Swift语言中的String有很多相似之处. 1.字符串的定义String类 var str1 ...
- 窥探Swift编程之错误处理与异常抛出
在Swift 2.0版本中,Swift语言对其错误处理进行了新的设计,当然了,重新设计后的结果使得该错误处理系统用起来更爽.今天博客的主题就是系统的搞一下Swift中的错误处理,以及看一下Swift中 ...
- 窥探Swift之协议(Protocol)和委托代理(Delegate)回调的使用
协议与委托代理回调在之前的博客中也是经常提到和用到的在<Objective-C中的委托(代理)模式>和<iOS开发之窥探UICollectionViewController(四) - ...
- 窥探Swift之类的继承与类的访问权限
上一篇博客<窥探Swift之别具一格的Struct和Class>的博客可谓是给Swift中的类开了个头.关于类的内容还有很多,今天就来搞一下类中的继承以及类的访问权限.说到类的继承,接触过 ...
随机推荐
- es6转es5
一.在没有IDE情况下的转换 在"我的电脑->D盘”新建个文件夹es6,文件夹里新建一个文件es6.js. 打开命令行窗口 1.先全局安装babel-cli,输入命令 npm inst ...
- Erlang error handling
Erlang error handling Contents Preface try-catch Process link Erlang-way error handling OTP supervis ...
- setTimeout 学习闭包
@(技术笔记)[css] 学习参考网站 css 网站,可供参考 javascript学习网站 var create = function (i){ return function(){ console ...
- NFSv4的引用,迁移和备份(用户手册 v0.2)
RFC3530 定义了NFS文件系统迁移和引用的管理机制.文件系统定位功能通过fs_location属性向客户端提供文件系统的位置信息.fs_location属 性是一个包含有位置信息的列表,位置信息 ...
- 制作dll自动注册工具
记录一个简单的dll自动注册工具制作:主要用到的是DllRegisterServer()方法,其实我们平常注册dll文件内部都会调用这个方法. 这里我就直接写在主程序里面了,需要注意的地方也直接在代码 ...
- js ---- 时间格式
Js获取当前日期时间及其它操作 var myDate = new Date(); myDate.getYear(); //获取当前年份(2位) myDate.getFullYear(); ...
- Java的书写格式,标识符及命名规则,注释
Java的书写格式,标识符及命名规则,注释 1.Java语言的书写格式(约定成俗) 1) 大括号要对齐(左大括号与句尾对其,后面大括号与句头对齐),并且成对写 2) 左大括号前面有空格 3) 遇到左大 ...
- .NET中那些所谓的新语法之一:自动属性、隐式类型、命名参数与自动初始化器
开篇:在日常的.NET开发学习中,我们往往会接触到一些较新的语法,它们相对以前的老语法相比,做了很多的改进,简化了很多繁杂的代码格式,也大大减少了我们这些菜鸟码农的代码量.但是,在开心欢乐之余,我们也 ...
- .NET中使用APlayer组件自制播放器
目录 说明 APlayer介绍 APlayer具备功能 APlayer使用 自制播放器Demo 未完成工作 源码下载 说明 由于需求原因,需要在项目中(桌面程序)集成一个在线播放视频的功能.大概要具备 ...
- 大白话讲解Promise(二)理解Promise规范
上一篇我们讲解了ES6中Promise的用法,但是知道了用法还远远不够,作为一名专业的前端工程师,还必须通晓原理.所以,为了补全我们关于Promise的知识树,有必要理解Promise/A+规范,理解 ...