原创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的更多相关文章

  1. Swift新手教程系列5-函数+selector在swift中的使用方法

    原创blog.转载请注明出处 近期在用swift写代码,尽管遇到一些问题,可是代码量确实减了不少. swfit新手教程系列会随着我使用swfit中的积累,不断地去修正更新 之前的教程 swift单例模 ...

  2. Unix/Linux环境C编程新手教程(30) 字符串操作那些事儿

    函数介绍 rindex(查找字符串中最后一个出现的指定字符) 相关函数 index,memchr,strchr,strrchr 表头文件 #include<string.h> 定义函数 c ...

  3. Swift新手教程12-可选链

    可选链 原创Blog,转载请注明出处 我的博客地址 http://blog.csdn.net/hello_hwc 可选链提供一个一种可选的方式訪问对象的属性.方法.下标脚本,可选链的返回值一定是可选类 ...

  4. ios新开发语言swift 新手教程

    http://gashero.iteye.com/blog/2075324 视频教程:http://edu.51cto.com/lesson/id-26464.html

  5. swift 雨燕 新手教程

    Apple Swift编程语言新手教程 chox 2014-06-03 文件夹 简单介绍 入门 简单值 控制流 函数与闭包 对象与类 枚举与结构 1   简单介绍 今天凌晨Apple刚刚公布了Swif ...

  6. apple Swift语言新手教程

    Apple Swift编程语言新手教程 文件夹 1   简单介绍 2   Swift入门 3   简单值 4   控制流 5   函数与闭包 6   对象与类 7   枚举与结构 1   ...

  7. 苹果Swift编程语言新手教程【中国版】

    Swift代码语言教程:在刚刚过去的WWDC2014大会上,苹果公司新公布了一种编程语言Swift.据悉.Swift语言继承了C语言以及Objective-C的特性,且克服了C语言的兼容性问题.对于广 ...

  8. The Swift Programming Language-官方教程精译Swift(4)字符串和字符

    String 是一个有序的字符集合,例如 "hello, world", "albatross".Swift 字符串通过 String 类型来表示,也可以表示为 ...

  9. Swift初体验之HelloWord+苹果Swift编程语言新手教程【中文版】

    AppDelegate.swift : <span style="font-size:24px;"><strong>// // AppDelegate.sw ...

随机推荐

  1. Dvtm -- 平铺式终端

    Dvtm -- 平铺式终端_Linux伊甸园开源社区-24小时滚动更新开源资讯,全年无休! Dvtm -- 平铺式终端 关注我们: 如果你使用过 Dwn 或 Awesome 这种平铺式窗口管理器,一定 ...

  2. OCP读书笔记(11) - 使用闪回技术II

    闪回归档 1. 什么是闪回数据归档? 闪回归档是用来保存一个或多个表的历史数据的新数据库对象,以及该数据的存储保留和清除策略.归档只是保存数据库中一个或多个表的所有事务处理的变化的一个或多个表空间,数 ...

  3. Kendo UI开发教程(14): Kendo MVVM 数据绑定(三) Click

    Click绑定可以把由ViewModel定义的方法不绑定到目标DOM的click事件.当点击目标DOM元素时触发ViewModel的对应方法.例如: 使用Click绑定 1 <div id=&q ...

  4. c++ stl algorithm: std::fill, std::fill_n

    std::fill 在[first, last)范围内填充值 #include <iostream> #include <vector> #include <algori ...

  5. BGP的状态机制

    Idle 状态:即空闲状态,不接受任何BGP的连接,等待Start事件的产生,如果有start事件产生,若有start事件产生,系统开启ConnectRetry定时器,向邻居发起TCP连接,并将状态变 ...

  6. poj3468(线段树)

    题目连接:http://poj.org/problem?id=3468 线段树功能:update:成段增减 query:区间求和. 分析:需要用到延迟标记(或者说懒惰标记),简单来说就是每次更新的时候 ...

  7. c#怎样获取excel单元格的RGB颜色

    这段时间一直在做office的工作.前2天获取单元格的颜色的问题一直没搞明确. 開始我想用的就是Npoi.主要前一部分的工作都是用Npoi完毕的 row.GetCell(j).CellStyle.Fi ...

  8. 使用Nexus搭建企业maven仓库(二)

    先阅读<使用Nexus搭建企业maven仓库(一)> http://blog.csdn.net/ouyida3/article/details/40747545 1.官网眼下最新的版本号是 ...

  9. Hadoop Spark 集群简便安装总结

    本人实际安装经验,目的是为以后高速安装.仅供自己參考. 一.Hadoop 1.操作系统一如既往:①setup关掉防火墙.②vi /etc/sysconfig/selinux,改SELINUX=disa ...

  10. prepareCall()运行存储过程

    CallableStatement 对象为全部的 DBMS 提供了一种以标准形式调用已储存过程的方法.已储存过程储存在数据库中.对已储存过程的调用是 CallableStatement对象所含的内容. ...