swift string以及NSstring的扩展
论坛里好像没有移动端开发的教程 最近在做IOS的开发,跟大家一起学习了最近2天遇到了string里操作问题,可以理解为要用swift写出文本_取出中间文本 这个方法
但在swift里貌似行不通,因为他的index不是int类型(不要用易语言去理解swift 易语言封装太好导致容易编程,一开始我也是根据易语言的取出文本思路去写下图)
用string可以强制转换成NSstring的方式,用NSstring类去做,结果如下
class leyi { func swiftJC () { var s="1234567890" var ns1=(s as NSString).substringFromIndex(5) var ns2=(s as NSString).substringToIndex(4) var ns3=(s as NSString).substringWithRange(NSMakeRange(4, 1)) print(ns1)//67890 print(ns2)//1234 print(ns3)//5 }}虽然nsstring的index 是int类型,然而发现他并不是我们想要的效果,因为他没有直接提供我们要搜索的前文本 后文本的坐标。 所以需要要有类似seach命令查看下NSstring的api文档在下眼拙,看了半天实在无法找到直接命令只好换string类去操作直接调用String的对应方法(推荐使用该方法),由于String对应的方法参数是String.Index类型而非Int类型,所以我们首先要创建String.Index类型参数值,代码如下: funcswift2 () { // var s="1234567890" // let index = advance(s.startIndex, 5)swift 1.x //let index2 = advance(s.endIndex, -6); swift 1.x var s="1234567890" let index = s.startIndex.advancedBy(5) //swift 2.0+ let index2 = s.endIndex.advancedBy(-6) //swift 2.0+ var range = Range<String.Index>(start: index2,end: index) var s1:String=s.substringFromIndex(index) var s2:String=s.substringToIndex(index2) var s3=s.substringWithRange(range) print(s1)//67890 print(s2)//1234 print(s3)//5
}创建string需要的index对象后,用range()来创建substringwithRange的range对象,虽然看起来解决了我们的问题,我们只需要用string.rangeofstring()来找出前文本 后文本,但调试后发现一个问题,我们无法指定他从哪个起始位置开始寻找后文本,这样会导致得出的文本并不是我们想要的,在翻遍了string的api后,恍然灵机一动,其实可以用上面2种方法结合起来就可以写出我们要的方法, 最终代码如下:class selfstring { funcstringmid (wholestring:String,front:String,behind:String)->String {
if wholestring.isEmpty { return("wholestring 不能为nil") //wholestring 不能为nil }else{ var whole:NSString=wholestring let frontindex = whole.rangeOfString(front) if frontindex.length > 0 { whole = whole.substringFromIndex(frontindex.location + frontindex.length) let behindindex = whole.rangeOfString(behind) if behindindex.length > 0 { whole = whole.substringToIndex(behindindex.location) return(whole as String) } else {return("没有找到behind在wholestring")} //没有找到behind在wholestring } else{return("没有找到front 在wholestring")}// 没有找到front 在wholestring }
}
用NSstring的rangeOfString 得到他的index,而nsstring的index是可以得到他的length和location且返回值是int类型,再用substringFromIndex 去掉前文本以及用substringToIndex去掉后文本,思路已经跟精益模块提供的思路不一样了,确实也没有办法 swift貌似无法做到直接从指定位置开始寻找,当然也有可能是我查看SDK文档不仔细,我想这门语言如此强大应该会有,本人小菜,如果有知道的同学请告诉我下
虽然整个程序比较简单,但还是发上来希望对大家有所帮助, 因为这个我花了2天时间才搞定,,哎。。。 英语不好是死穴o(╯□╰)o
{:4_90:} 明白了,我是小C的小C
页:
[1]