swift中字符串截取方法(substring)

转载 2018年04月17日 10:30:32

下面介绍2种swift的字符串截取方法,实际上用到了substringFromIndex,substringToIndex,substringWithRange

1.将String转化为NSString再截取,代码如下:

 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))

println(ns1)//67890
println(ns2)//1234
println(ns3)//5

2.直接调用String的对应方法(推荐使用该方法),由于String对应的方法参数是String.Index类型而非Int类型,所以我们首先要创建String.Index类型参数值,代码如下:

// 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

extension String {
    subscript (r: Range<Int>) -> String {
        get {
            let startIndex = self.startIndex.advancedBy(r.startIndex)
            let endIndex = self.startIndex.advancedBy(r.endIndex)

            return self[Range(start: startIndex, end: endIndex)]
        }
    }
}

var s4 = s[2...4]
print(s4);//345

通过String定义可以看出属性Index是个结构体,具体代码如下:

extension String : CollectionType {
    struct Index : BidirectionalIndexType, Comparable, Reflectable {
        func successor() -> String.Index
        func predecessor() -> String.Index
        func getMirror() -> MirrorType
    }
    var startIndex: String.Index { get }
    var endIndex: String.Index { get }
    subscript (i: String.Index) -> Character { get }
    func generate() -> IndexingGenerator<String>
}

《程序员》杂志试刊一发刊词

发刊词    60年的计算机发展史,就是一部程序员历史。    “软件推动计算机,计算机推动历史”,这样的说法并不过分。中国的PC时代,也完全是一个程序员时代,严援朝、吴晓军、求伯君、王选、鲍岳桥、王...
  • ycrao
  • ycrao
  • 2000-11-24 16:59:00
  • 3138

swift3.0 中字符串截取

swift3.0 中不能直接使用下标数字进行字符串解决,只能使用String.Index来做位置索引,要想实现截取功能首先得获取到String.Index; 下面两段代码获取开头可结尾,获取中间...
  • lanhy999
  • lanhy999
  • 2016-07-31 12:29:13
  • 16305

【iOS】Swift字符串截取方法的改进

在Swift中String类的变量可以通过import Foundation来使用substringToIndex方法和substringFromIndex方法。但是不能像OC那样,以NSRange类...
  • lotusiki
  • lotusiki
  • 2014-07-04 23:38:35
  • 7273

Swift4.0 新特性----字符串改进

注:文章转自这里 1.Unicode 字符串在计算 count 时的正确性改善 在 Unicode 中,有些字符是由几个其它字符组成的,比如 é 这个字符,它可以用 \u{E9} 来表示,也可以用 e...
  • youshaoduo
  • youshaoduo
  • 2017-08-31 17:39:42
  • 10871

[Swift 3.0]String的Extension--字符串的截取

在Swift中进行字符串的截取的时候, 不像使用NSString那么方便, 这是因为String的截取方法substring(from: )所需要的参数不是Int类型, 这在使用的时候就很不方便, 这...
  • lqq200912408
  • lqq200912408
  • 2017-05-17 17:18:22
  • 404

Swift4.0 学习笔记 第七节:字符串String

////  ViewController.swift//  010-字符串////  Created by 庄壮勇 on 2018/1/3.//  Copyright © 2018年 Personal...
  • mn704058053
  • mn704058053
  • 2018-01-15 10:21:05
  • 112

Swift3 String.Index 字符串截取

swift3.0 中不能直接使用下标数字进行字符串解决,只能使用String.Index来做位置索引,要想实现截取功能首先得获取到String.Index; let mainString = "01...
  • youshaoduo
  • youshaoduo
  • 2016-11-23 12:44:48
  • 8598

Swift4.0 字符串操作

import UIKit var str = "Hello, playground" var index = str.index(of: ",") //得到空格在字符串中的位置 //Swift...
  • qq_30932479
  • qq_30932479
  • 2017-11-13 10:28:52
  • 3692

java中字符串截取,调用substring()方法

substring() 方法返回字符串的子字符串。在java中 substring()方法有两种用法, 第一种 public String substring(int beginIndex) ...
  • YZF11
  • YZF11
  • 2017-12-06 12:03:18
  • 139

字符串处理截取slice、substring、substr的异同

在项目开发过中,字符串是一种很特殊的东西,不可逃避地要经常对其处理,截取获得某几个字符是一种经常的事情。然而,在面试题中也经常出现对字符串处理的一些问题,尤其一些大公司,比如:慧*网,最近看其面试题中...
  • pvfhv
  • pvfhv
  • 2013-03-10 05:38:30
  • 2569
收藏助手
不良信息举报
您举报文章:swift中字符串截取方法(substring)
举报原因:
原因补充:

(最多只允许输入30个字)