Swift_String>SubstringWithRange用法
2015-07-17 15:05
344 查看
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/iOS_And_Swift/article/details/46927703
1.链接字符串用法
var str1 = "我" var actionStr = "在" var sthStr = "吃苹果" var allStr = str1 + actionStr + sthStr //可以直接相加 allStr += ",吃完了苹果"//+= 也可以连接字符串
2.判断字符串
if allStr == "我在吃苹果"{ //直接可以等号 print(allStr) } if allStr.isEmpty {//判断是否是空字符串 print("allstr is empty") }
3.截断字符串
/* 字符串截取 */ 错误写法 var str:String = "Hello, World!" println(str.substringToIndex(3)) println(str.substringFromIndex(3))
然而,奇怪的是第三种方法却怎么也用不了
var r = NSRange(location: 1,length: 2)
调用substringWithRange() 函数总是语法有误:
var str1:String = str.substringWithRange(r) //语法有误!
解决方案:
解决方案(一):把String类的变量转存为NSString类型【不推荐】
var nsString: NSString = str println(nsString.substringWithRange(r))
解决方案(二):对String类进行扩展,重载substringWithRange()
extension String { func substringWithRange(range: NSRange) -> String! { var str1 = self.substringFromIndex(range.location) var str2 = str1.substringToIndex(range.length) return str2 }
有了这个扩展,就可以按照NSString的方式来截取字符串啦!
完整演示代码:
var str:String = "Hello, World!" /* import Foundation之前,子串截取方法不能使用 */ // println(str.substringToIndex(3)) //error // println(str.substringFromIndex(3)) //error import 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 = str println(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))
还没有结束。。。。。。。。。。。。。。。。。。。。。。。。。。。
为什么系统的方法不能 用呢?
其实还是能用的,大招来了。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
llStr = allStr.substringWithRange( Range<String.Index> (start: advance(allStr.startIndex, 0), end: advance(allStr.endIndex, -3))) //完全正确 没有报错。Rang返回的就是<String>Index>类型,
让我们来看看 advance()is what??
/// Return the result of advancing `start` by `n` positions. If `T` /// models `RandomAccessIndexType`, executes in O(1). Otherwise, /// executes in O(`abs(n)`). If `T` does not model /// `BidirectionalIndexType`, requires that `n` is non-negative. func advance<T : ForwardIndexType>(start: T, n: T.Distance) -> T
官方解释是返回一个位置,对的就是一个location,对于OC大家很熟悉的NSRang的第一个参数,
然而咋SwiftRang中的第二个参数也是一个location,还是觉得别扭,好吧。但是用2月就很OK了。
完整代码如下:
var str1 = "我" var actionStr = "在" var sthStr = "吃苹果" var allStr = str1 + actionStr + sthStr //拼接字符串 allStr += ",吃完了苹果" if allStr == "我在吃苹果"{//判断是否相等 print(allStr) } if allStr.isEmpty {//判断是否是空串 print("allstr is empty") } println(allStr) allStr = allStr.substringWithRange( Range<String.Index> (start: advance(allStr.startIndex, 0), end: advance(allStr.endIndex, -3)))//大家熟悉的OC中的SubStringWithRange 哈哈 if str1 == "我" { print(allStr) } //advance(allStr.startIndex, 2) 这只是一个位置,就是allStr字符串的开始向右移动2的单位的位置
好了,大部分用常用的都已经说了,谢谢观看。
相关文章推荐
- Swift4 'substring(to:)' is deprecated: Please use String slicing subscript with a 'partial range upt
- swift3 截取字符串(substringwithrange)报错,it will be removed in Swift 3. Use the '..<' operator.
- split string with character in swift
- substringFromIndex,substringWithRange,substringToIndex
- stringByReplacingCharactersInRange: withString: 實現字符串删除,替换
- substringFromIndex,substringWithRange,substringToIndex
- string.Substring,string.Concat的用法
- xpath 特殊用法 starts-with(),string(.)的学习笔记
- 【leetcode】String——Substring with Concatenation of All Words(30)
- NSMakeRange,substringWithRange,substringToIndex,substringFromIndex区别和联系
- stringByReplacingCharactersInRange: withString: 實現字符串删除,替换
- stringByReplacingCharactersInRange: withString: 实现字符串删除,替换
- string里的IndexOf、LastIndexOf、Substring的详解(意义和用法)
- Swift学习笔记(十八)——字符串String.Index和Range详解
- iOS -Swift 3.0 -String(字符串常规用法)
- Find the longest substring with k unique distinct characters in a given string (Google)
- string里的IndexOf、LastIndexOf、Substring的详解(意义和用法)
- Java String中的indexof 和 substring 用法
- string里的IndexOf、LastIndexOf、Substring的详解(意义和用法)
- iOS开发经验技巧之stringByReplacingCharactersInRange: withString: 實現字符串删除,替换