Swift3.0语言教程使用指针创建和初始化字符串

Swift3.0语言教程使用指针创建和初始化字符串苹果的Swift团队花了不少功夫来支持C的一些基础特性。C语言中为我们提供了指针,Swift也不例外,开发者可以使用指针去创建和初始化字符串。

(1)在NSString中init(bytes:length:encoding:)方法可以从给定字符串按照指定获取方向,得到指定个数的字符,然后使用这些字符创建和初始化字符串。其语法形式如下:

convenience init?(bytes: UnsafePointer<Void>, length len: Int, encoding: UInt)

其中,bytes用来指定一个常量指针,length用来从使用的字节中指定字节数,encoding用来指定应用在字节中的字符编码。

【示例1-9】以下将使用init(bytes:length:encoding:)方法创建和初始化字符串。

import Foundation

var str=NSString(bytes: "Hello,World",length: 8,encoding: String.Encoding.utf8.rawValue)

print(str!)

运行结果如下:

Hello,Wo

(2)init(bytesNoCopy:length:encoding:freeWhenDone:)方法也是从给定字符串按照给定获取方向,得到指定个数的字符,通过这些字符创建和初始化字符串,但是此方法需要对存储器中数据的释放进行设置。其语法形式如下:

convenience init?(bytesNoCopy bytes: UnsafeMutablePointer<Void>, length len: Int, encoding: UInt, freeWhenDone freeBuffer: Bool)

其中,参数说明如下:

q  bytes:用来指定一个变量指针。

q  len:用来用来从使用的字节中指定字节数。

q  encoding:用来指定应用在字节中的字符编码。

q  flag:用来对存储器中数据的释放进行设置。当设置为true时,可以将存储器中不再使用的数据进行释放,反之,不释放。

【示例1-10】以下将使用init(bytesNoCopy:length:encoding:freeWhenDone:)方法创建和初始化字符串。

import Foundation

var a=NSString(string: "Hello,World")

var b=a.utf8String!

var c:UnsafeMutablePointer<Void>=UnsafeMutablePointer<Void>(b)

var str=NSString(bytesNoCopy: c,length: 8,encoding: String.Encoding.utf8.rawValue,freeWhenDone: true)

print(str!)

运行结果如下:

Hello,Wo

(3)init(characters:length:)方法可以从一个C语言字符串获得指定个数的元素,通过这些元素对字符串进行创建和初始化,其语法形式如下:

convenience init(characters: UnsafePointer<unichar>, length: Int)

其中,characters用来指定一个常量指针,length用来从使用的字符中指定字符个数。

【示例1-11】以下将使用init(characters:length:)方法创建和初始化字符串。

import Foundation

let str1=NSString(string: "Hello")

let char:[unichar]=[str1.character(at: 0),str1.character(at: 1),str1.character(at: 2),str1.character(at: 3),str1.character(at: 4)]

var str2=NSString(characters: char,length: 3)

print(str2)

运行结果如下:

Hel

(4)init(charactersNoCopy:length:freeWhenDone:)方法也是从一个C语言字符串获得指定个数的元素,通过这些元素对字符串进行创建和初始化,但是此方法需要对存储器中数据的释放进行设置。其语法形式如下:

convenience init(charactersNoCopy characters: UnsafeMutablePointer<unichar>, length: Int, freeWhenDone freeBuffer: Bool)

其中,参数说明如下:

q  characters:用来指定一个变量指针。

q  length:用来从使用的字符中指定字符个数。

q  freeBuffer:用来对存储器中数据的释放进行设置。当设置为true时,可以将存储器中不再使用的数据进行释放,反之,不释放。

【示例1-12】以下将使用init(charactersNoCopy:length:freeWhenDone:)方法创建和初始化字符串。

import Foundation

let a=NSString(string: "Swift")

var b:[unichar]=[a.character(at: 0),a.character(at: 1),a.character(at: 2),a.character(at: 3),a.character(at: 4)]

var str=NSString(charactersNoCopy: &b,length: 3,freeWhenDone:true)

print(str)

运行结果如下:

Swi

(5)init(utf8String:)方法可以使用UTF8格式的字符串创建和初始化一个字符串,其语法形式如下:

convenience init?(utf8String nullTerminatedCString: UnsafePointer<Int8>)

其中,nullTerminatedCString用来指定一个常量指针。

【示例1-13】以下将使用init(utf8String:)方法创建和初始化字符串。

import Foundation

var str=NSString(utf8String: "Swift")

print(str!)

运行结果如下:

Swift

(6)init(cString:encoding:)方法可以从一个C语言字符串获得元素,通过这些元素对字符串进行创建和初始化,其语法形式如下:

convenience init?(cString nullTerminatedCString: UnsafePointer<Int8>, encoding: UInt)

其中,nullTerminatedCString用来指定一个常量指针,encoding是nullTerminatedCString的编码。

【示例1-14】以下将使用init(cString:encoding:)方法创建和初始化字符串。

import Foundation

var str=NSString(cString: "Hello",encoding: String.Encoding.utf8.rawValue)

print(str!)

运行结果如下:

Hello

Swift3.0语言教程使用指针创建和初始化字符串

Swift3.0语言教程使用指针创建和初始化字符串的更多相关文章

  1. Swift3.0语言教程使用编码创建和初始化字符串

    Swift3.0语言教程使用编码创建和初始化字符串 使用编码创建和初始化字符串 创建和初始化字符串除了可以使用上文中提到的方法外,还可以使用init(coder:)方法,此方法一般不常使用,其语法形式 ...

  2. Swift3.0语言教程使用Unicode范式标准化获取字符串

    Swift3.0语言教程使用Unicode范式标准化获取字符串 Swift3.0语言教程使用Unicode范式标准化获取字符串,在NSString中可以使用4个属性去使用Unicode范式标准化获取字 ...

  3. Swift3.0语言教程获取字符串编码与哈希地址

    Swift3.0语言教程获取字符串编码与哈希地址 Swift3.0语言教程获取字符串编码与哈希地址,以下将讲解字符串中其它内容的获取方法. 1.获取字符串编码 在NSString中可以使用2个属性获取 ...

  4. Swift3.0语言教程使用占位符格式创建和初始化字符串

    Swift3.0语言教程使用占位符格式创建和初始化字符串 Swift3.0语言教程使用占位符格式创建和初始化字符串在很多的编程语言中都存在占位符,占位符就是为指定的内容占留一个位置.此功能一般在开发者 ...

  5. Swift3.0语言教程使用字符串创建和初始化字符串

    Swift3.0语言教程使用字符串创建和初始化字符串 Swift3.0语言教程使用字符串创建和初始化字符串,在编程语言中,字面值是很常见的数据描述形式.人们可以通过字面所表达的意思,获知其含义,尤其是 ...

  6. Swift3.0语言教程字符串与文件的数据转换

    Swift3.0语言教程字符串与文件的数据转换 Swift3.0语言教程字符串与文件的数据转换,如果想要对字符串中的字符进行永久保存,可以将字符串中的字符写入到文件中.当然,开发者也可以将写入的内容进 ...

  7. Swift3.0语言教程使用路径字符串

    Swift3.0语言教程使用路径字符串 Swift3.0语言教程使用路径字符串,路径其实是字符串的一种,我们称为路径字符串.本小节将讲解如何使用路径字符串. 1.组合路径 开发者可以将数组快速的组合成 ...

  8. Swift3.0语言教程分割字符串与截取字符串

    Swift3.0语言教程分割字符串与截取字符串 Swift3.0语言教程分割字符串 如果想要快速的创建一个数组,我们可以将字符串进行分割,分割后的内容将会生成一个数组.在NSString中有两个分割字 ...

  9. Swift3.0语言教程字符串与URL的数据转换与自由转换

    Swift3.0语言教程字符串与URL的数据转换与自由转换 Swift3.0语言教程字符串与URL的数据转换 Swift3.0语言教程字符串与URL的数据转换与自由转换,字符串中的字符永久保存除了可以 ...

随机推荐

  1. MAC系统下配置环境变量

    环境变量初始值 /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin 使用export 可以设置暂时的环境变量 如果要追加PATH的话添加新的变量到文件中expor ...

  2. 【python】入门学习(六)

    type() #检查变量或值得数据类型 >>> type(5) <class 'int'> 序列:包括字符串.元组和列表.序列都可以用索引.切片.len()(计算元素个数 ...

  3. 核心动画基础动画(CABasicAnimation)关键帧动画

    1.在iOS中核心动画分为几类: 基础动画(CABasicAnimation) 关键帧动画(CAKeyframeAnimation) 动画组(CAAnimationGroup) 转场动画(CATran ...

  4. September 26th 2016 Week 40th Monday

    The land didn't move, but moved. The sea wasn't still, yet was still. 大地止而亦行,大海动而亦静. Still waters ru ...

  5. visio 到处流程图

    文件 -> 另存为 (选 .jpg) 选自定义,然后 300 * 300 像素.

  6. Mysql子查询

    1单值(Scalar operand) 只有当外层(Parent)不为空时,才返回相应值:否则返回NULL. note:For the subquery just shown, if t1 were ...

  7. NYOJ题目1051simone牌文本编辑器

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAsgAAAKFCAIAAABeD4iTAAAgAElEQVR4nO3dO3LjOtOA4X8TzrUQx1

  8. 三、jQuery--jQuery基础--jQuery基础课程--第8章 jQuery 实现Ajax应用

    1.使用load()方法异步请求数据 使用load()方法通过Ajax请求加载服务器中的数据,并把返回的数据放置到指定的元素中,它的调用格式为:load(url,[data],[callback]) ...

  9. HTML5学习之智能表单(二)

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  10. Linux常用命令学习1---(安装、文件系统、目录操作命令cd ls mv cp rm mkdir、链接命令ln……)

    1.理解Linux的文件系统:分区和挂载点    挂载点和路径名无关 /根目录下的/boot完全可以时独立于 /的独立的挂载点,只要你设置就可以    linux安装时候,必须要有这两个分区 / 和 ...