【iOS】Swift字符串截取方法的改进
来源:互联网 发布:wm6.1软件下载 编辑:程序博客网 时间:2024/05/02 04:19
字符串截取方法是字符串处理中常用的基本方法。熟悉iOS的朋友都知道在基础类的NSString中有substringToIndex:,substringFromIndex:以及substringWithRange:这三种基本的截取方法。
问题描述:
那么,Swift语言中的String类是否有同样的截取功能呢?
反复查看String类的头文件,并没有找到相同或相似的函数接口。
直接在swift文件里也不能对一个String类的变量调用上面的方法。
然而通过引入基础框架,即
import Foundation
就可以使用前两个截取方法了:
/* 字符串截取 */var str:String = "Hello, World!"println(str.substringToIndex(3))println(str.substringFromIndex(3))
然而,奇怪的是第三种方法却怎么也用不了。无论是这样创建范围:
var r:NSRange = NSMakeRange(1,2)
var r = NSRange(location: 1,length: 2)
调用substringWithRange() 函数总是语法有误:
var str1:String = str.substringWithRange(r) //语法有误!
错误提示是:Cannot convert the expression's type 'String' to type 'Range<String.Index>'
可见是参数类型不符合,不大了解Range<String.Index>这个类型到底能怎么搞出来,但是给出以下两种解决方案。
解决方案:
解决方案(一):把String类的变量转存为NSString类型
var nsString: NSString = strprintln(nsString.substringWithRange(r))
当然这个方案有点赖,实质上已经不是String类的截取而是NSString类的截取了。而且每个String类的都要转一下子,如果字符串一多,就略显麻烦。
有没有其它方法解决这个问题呢?下面给出第二个解决方案。
解决方案(二):对String类进行扩展,重载substringWithRange()
extension String { func substringWithRange(range: NSRange) -> String! { var str1 = self.substringFromIndex(range.location) var str2 = str1.substringToIndex(range.length) return str2 }}
有了这个扩展,就可以按照NSString的方式来截取字符串啦!
完整演示代码:
//// main.swift// Swift中字符串的截取方法//// Created by 杜子兮 on 14-7-4.// Copyright (c) 2014年 lanou3g.com 蓝鸥 All rights reserved.//var str:String = "Hello, World!"/* import Foundation之前,子串截取方法不能使用 */// println(str.substringToIndex(3)) //error// println(str.substringFromIndex(3)) //errorimport Foundation/* import Foundation之后,下面这两个函数可以直接使用 */println(str.substringToIndex(3))println(str.substringFromIndex(3))var r:NSRange = NSMakeRange(3,5)/* String类的变量不能直接这样取中间子串 */// println(str.substringWithRange(r)) //error// 解决方案(一):转换为NSString类的var nsString: NSString = strprintln(nsString.substringWithRange(r))// 解决方案(二):扩展String类extension String { func substringWithRange(range: NSRange) -> String! { var str1 = self.substringFromIndex(range.location) var str2 = str1.substringToIndex(range.length) return str2 }}println(str.substringWithRange(r))
0 0
- 【iOS】Swift字符串截取方法的改进
- [IOS]Swift字符串截取方法的改进
- iOS Swift字符串截取
- swift-字符串的截取
- swift中字符串截取方法(substring)
- swift中字符串截取方法(substring)
- swift中字符串截取方法(substring)
- swift中字符串截取方法(substring)
- 截取字符串的方法
- swift 字符串的截取和拼接
- swift 3.0 字符串截取
- swift 字符串拼接、截取
- swift中字符串截取
- 字符串三种截取方法iOS
- js截取字符串的方法
- js截取字符串的方法
- js截取字符串的方法
- js截取字符串的方法
- Collecting Bugs - POJ 2096 dp
- FPGA研发(1)FPGA是个什么玩意?
- 十进制数与二进制, 八进制, 十六进制之间的转换
- 理解 process.initgroups(user, extra_group)
- uva 10620 - A Flea on a Chessboard(暴力+数学)
- 【iOS】Swift字符串截取方法的改进
- PHP range协议实现输出文件断点续传
- 提問的智慧
- 计算字符串的长度
- Android学习笔记之ImageSwitcher
- 建造者模式,Builder
- Spring问题集合
- Wireshark基本介绍和学习TCP三次握手
- 嵌入式开发终端软件Xshell介绍