Swift新手教程3-字符串String
原创blog,转载请注明出处
String
在swfit中,String兼容Unicode的方式。用法和C语言类似。
注意
在Cocoa和Cocoa touch中,Swift的String,和Foundation中的NSString是兼容的,全部NSString额API都能够调用String类型
字符串常量
1、含转义字符:比如\n,\t等
2、单字节Unicode标量,\xmm
3、双字节Unicode标量,\ummmm
4、四字节Unicode标量,\Ummmmmmmm
这里的m为十六进制数
let myname = "Hwc"//hwc
let myname = "\"Hwc\""//"hwc"
初始化
var emptyString = "" //空字符串
var sameEmptyString = String()//空字符串
var notEmptyString = "first"
值传递
在swfit中。对字符串进行赋值操作或者作为參数传递给函数的时候是值传递。也就是说传递的是副本,而不是本身的引用。
这点和Cocoa的NSString不同
字符串经常使用操作
1 isEmpty属性
推断是否为空
let str = ""
if str.isEmpty{
println("This is empty")
}
2 startIndex endIndex countElements
返回最后一个字符的index,返回值类型String.Index
let str = "Hello world"
println(str.endIndex)//11
println(countElements(str))
3 toInt()
返回Int?即,假设能转换成功,则返回值是Int,否则为nil
var str = "123"
var result = str.toInt()
if result != nil{
println("Success")
}
4 子字符串
subStringFromIndex(index:String.index)
subStringToIndex(index:String.index)
subStringWithRange(aRange:Range())
这里要使用到一个advance函数: advance(start:T,n:Distance)
就是相对于T的偏移Distance距离。由于临时还找不到int转String.index合适的API
stackoverflow上找了些资料,似乎swift的API还有非常多不完好的地方
在最后。我会讲到怎样扩展一个类,然后给出子字符串的样例
var str = "hello world"
str.substringFromIndex(advance(str.startIndex,6))//hello
str.substringToIndex(advance(str.startIndex,5)) //world
str.substringWithRange(Range(start:advance(str.startIndex,2),end:advance(str.startIndex,8)))//llo wo
5 字符串拼接
非常简答,用加号+ 或者字符串插值
var str1 = "hello"
var str2 = "world"
var str = str1 + str2
var str2 = "\(str1) hwc and the \(str2)" //hello hwc and the world
6 大写和小写转换
str.uppercaseString //HELLO WORLD
str.lowercaseString //hello world
7 前缀后缀 相等
Bool hasPrefix(prefix:String)
Bool hasSuffix(suffix:String)
var str = "hello hwc"
str.hasPrefix("hello") //true
str.hasSuffix("123") //false
var str1 = "jack"
if str == str1{ println("Equal")}
8 处理子字符串
Void insert(newElememt:Character,atIndex:String.index) //插入字符
Void removeAtIndex(i:String.Index) //删除字符
Void removeRange(subRange:Range<String.Index>)//删除一个区间
Void replaceRange(subRange:Range<String.Index>,with:C)
9 格式化合并字符串
String stringByAppendingFormat(format:String,arguments:CVarArgType...)
var str = "hello world"
str.stringByAppendingFormat("%d",4) //hello world4
10 utf8 utf16属性
str.utf8 //返回str的utf8表示的集合
str.utf16 //返回str的utf17表示的集合
扩展String
通过扩展swifr的类,能够提供新的方法而不改变原有的类。下面为几个扩展函数,分别扩展了
通过下标获得子字符串
以及substring的三个重载
extension String {
subscript (r: Range<Int>) -> String {
get {
let subStart = advance(self.startIndex, r.startIndex, self.endIndex)
let subEnd = advance(subStart, r.endIndex - r.startIndex, self.endIndex)
return self.substringWithRange(Range(start: subStart, end: subEnd))
}
}
func substring(from: Int) -> String {
let end = countElements(self)
return self[from..<end]
}
func substring(from: Int, length: Int) -> String {
let end = from + length
return self[from..<end]
}
func substring(from:Int, to:Int) ->String
{
return self[from..<to]
}
}
var str = "hello world"
var str1 = str.substring(6)
var str2 = str.substring(0,to:5)
var str3 = str.substring(0,length:5)
在playground的右边输出能够看到
输出
hello
hello
world
Swift新手教程3-字符串String的更多相关文章
- Swift新手教程系列5-函数+selector在swift中的使用方法
原创blog.转载请注明出处 近期在用swift写代码,尽管遇到一些问题,可是代码量确实减了不少. swfit新手教程系列会随着我使用swfit中的积累,不断地去修正更新 之前的教程 swift单例模 ...
- Unix/Linux环境C编程新手教程(30) 字符串操作那些事儿
函数介绍 rindex(查找字符串中最后一个出现的指定字符) 相关函数 index,memchr,strchr,strrchr 表头文件 #include<string.h> 定义函数 c ...
- Swift新手教程12-可选链
可选链 原创Blog,转载请注明出处 我的博客地址 http://blog.csdn.net/hello_hwc 可选链提供一个一种可选的方式訪问对象的属性.方法.下标脚本,可选链的返回值一定是可选类 ...
- ios新开发语言swift 新手教程
http://gashero.iteye.com/blog/2075324 视频教程:http://edu.51cto.com/lesson/id-26464.html
- swift 雨燕 新手教程
Apple Swift编程语言新手教程 chox 2014-06-03 文件夹 简单介绍 入门 简单值 控制流 函数与闭包 对象与类 枚举与结构 1 简单介绍 今天凌晨Apple刚刚公布了Swif ...
- apple Swift语言新手教程
Apple Swift编程语言新手教程 文件夹 1 简单介绍 2 Swift入门 3 简单值 4 控制流 5 函数与闭包 6 对象与类 7 枚举与结构 1 ...
- 苹果Swift编程语言新手教程【中国版】
Swift代码语言教程:在刚刚过去的WWDC2014大会上,苹果公司新公布了一种编程语言Swift.据悉.Swift语言继承了C语言以及Objective-C的特性,且克服了C语言的兼容性问题.对于广 ...
- The Swift Programming Language-官方教程精译Swift(4)字符串和字符
String 是一个有序的字符集合,例如 "hello, world", "albatross".Swift 字符串通过 String 类型来表示,也可以表示为 ...
- Swift初体验之HelloWord+苹果Swift编程语言新手教程【中文版】
AppDelegate.swift : <span style="font-size:24px;"><strong>// // AppDelegate.sw ...
随机推荐
- SetDlgItemText控件运行错误
SetDlgltem函数把一个WM_SETTEXT消息发送到指定的控件. 今天在测试一个小程序,发现使用SetDlgItemText控件编译没问题,但是运行就出错误. 语句为: time=CTime: ...
- 自己动手写处理器之第一阶段(2)——MIPS指令集架构的演变
将陆续上传本人写的新书<自己动手写处理器>(尚未出版),今天是第三篇.我尽量每周四篇 MIPS指令集架构自上世纪80年代出现后.一直在进行着更新换代,从最初的MIPS I到MIPS V,发 ...
- hibernate 在tomcat7.X 下配置mysql数据源
先说一点题外话,LZ近期学习java web. 今天刚看到hibernate,发如今hibernate配置数据源时网上的资料都太久远了,一般以tomcat 5 版本号下的配置居多.而tomcat 7下 ...
- Windows - Windows的文件名的全路径(Fully Qualified File Name)的最大长度为260字节
例如,你可以做以下实验来验证这个限制值: 在随意文件夹下新建一个文件夹. 在该新建文件夹下创建一个随意文件.使其名字长度不能再输入为止. 把该文件的全路径名copy到Microsoft Word中进行 ...
- uva796(求桥数目)
传送门:Critical Links 题意:给出一个无向图,按顺序输出桥. 分析:模板题,求出桥后排个序输出. #include <cstdio> #include <cstring ...
- vim删除^M
1.进入命令模式.vim的命令模式,就是在编辑模式下输入":",光标就会跳到屏幕最后一行,并在那里显示冒号,此时就已经进入命令模式. 命令模式的内容均显示在屏幕的最后一行,按下回车 ...
- poj - 1170 - Shopping Offers(减少国家dp)
意甲冠军:b(0 <= b <= 5)商品的种类,每个人都有一个标签c(1 <= c <= 999),有需要购买若干k(1 <= k <=5),有一个单价p(1 & ...
- hdu3853(概率dp)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=3853 题意:有一个人被困在一个 R*C(2<=R,C<=1000) 的迷宫中,起初他在 ( ...
- java--基于socket的网络传输开发
继http://blog.csdn.net/gaopeng0071/article/details/10959845此文章内容展开的研究. socket传输是基于tcp的网络传输协议进行的传输,tcp ...
- PHP上传文件超过了最大文件大小限制导致无法上传成功
最近的研究<HeadFirst PHP & MySQL>第一本书5章"使用存储在文件中的数据",难道当一个文件上传应用程序,发生了错误.即,文件不能成功上传.这 ...