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. 电子现金、电子钱包、qPBOC、闪付、UPCash

    一.关于金融IC卡领域的规范 由Europay.Mastercard.Visa三大国际信用卡组织联合制定的金融集成电路(IC)卡金融支付标准,称为EMV规范,其目的是为金融IC卡.金融终端.支付系统以 ...

  2. [Android Pro] Android保存图片到系统图库

    http://stormzhang.github.io/android/2014/07/24/android-save-image-to-gallery/ http://blog.csdn.net/x ...

  3. springMVC创建基础变量

    在springMVC中有一些变量是基础变量,可以在全局多个地方使用,在修改规则的时候,这样只用修改一个地方就好了,而且可以避免很多不必要的bug出现下面就来总结一下在我的项目中如何去创建一个全局基础变 ...

  4. 在VC中创建并调用DLL

    转自:http://express.ruanko.com/ruanko-express_45/technologyexchange6.html 一.DLL简介 1.什么是DLL? 动态链接库英文为DL ...

  5. 分布式缓存系统Memcached简介与实践

    缘起: 在数据驱动的web开发中,经常要重复从数据库中取出相同的数据,这种重复极大的增加了数据库负载.缓存是解决这个问题的好办法.但是ASP.NET中的虽然已经可以实现对页面局部进行缓存,但还是不够灵 ...

  6. eclipse上安装abator插件

    下面是我看了网上的有一点需要强调:网址 http://ibatis.apache.org/tools/abator然后全选,然后是==>重启就好了 eclipse上安装abator插件参考:ht ...

  7. Swift - LineChart绘制折线图

    LineChart,就使用Core Graphics和QuartzCore框架中的CAShapeLayer绘制.这样执行效率明显比堆砌UIView的方法效率高--占用资源少,执行快. 看看CALaye ...

  8. 001课-java_web开发入门

    一.Tomcat服务器常见启动问题:(1).Java_home环境变量,由于tomcat服务器的bin目录中的一些jar文件必须使用到java类库,所以必须先配置Java_home环境变量.(2).端 ...

  9. 学习hibernate @Entity该导入哪个包

    1.在@Entity时很容易顺手导入@org.hibernate.annotations.Entity这个包,结果导致了异常.其实应该导入的是@javax.persistence.Entity Alw ...

  10. highcharts的简单使用

    在使用过的图表js插件中,个人认为还是highcharts最好,无论从兼容性,渲染速度,甚至是文档详细上来说,都一直觉得highcharts更胜一筹.现在花点时间做一下简单的总结,比如从一个矩形图开始 ...