美文网首页Swift
Swift4 字符串截取

Swift4 字符串截取

作者: 囧书 | 来源:发表于2017-09-06 14:10 被阅读1500次

What

现有字符串Hello, World!

let helloWorld = "Hello, World!"

想截取前5个字符为子串,一句话写出来,可以这样:

let subStringTo5 = String(helloWorld[..<helloWorld.index(helloWorld.startIndex, offsetBy: 5)])
print("subStringTo5: \(subStringTo5)")

打印结果:
subStringTo5: Hello

Why

要对String操作,大多需要通过String.Index为中间媒介来达到。
对于截取字符串,Swift4用的是[startIndex...endIndex]这样的语法,在String后跟一个区间。通俗讲,此区间的值要求用String.Index类型,下面我们来弄出一些Index值。

起始Index:

let startIndex = helloWorld.startIndex

在起始Index基础上偏移5:

let offset5Index = helloWorld.index(startIndex, offsetBy: 5)

在中括号里写两个值,可以得到一个子串,结果是SubString类型。
这种写法...是闭区间,得到结果包括左右两个Index对应的字符;
这种写法..<是开区间,得到结果包括了左Index对应的字符,但不包括右Index对应的字符:

let subString = helloWorld[startIndex..<offset5Index]

如果左Index不写,则默认为startIndex:

let subString = helloWorld[..<offset5Index]

以上得到的结果,类型还不是String,只是SubString类型而已,还需要我们多做一步工作,构造String :

let subStringTo5 = String(helloWorld[..<offset5Index])
print("subStringTo5: \(subStringTo5)")

打印结果:
subStringTo5: Hello

如果在中括号里只写一个Index值会怎么样?得到的结果是所写Index对应的字符,Character类型:

let offset5Character = helloWorld[offset5Index]
print("offset5Character: \(offset5Character)")

打印结果,是个逗号:
offset5Character: ,

How

如果觉得Swift4这样设计,不习惯,那么还是可以通过extension的方式,自己实现一个喜欢的subString方法。

extension String {
    func mySubString(to index: Int) -> String {
        return String(self[..<self.index(self.startIndex, offsetBy: index)])
    }
    
    func mySubString(from index: Int) -> String {
        return String(self[self.index(self.startIndex, offsetBy: index)...])
    }
}

使用:

print("subStringTo8: \(helloWorld.mySubString(to: 8))")
print("subStringFrom5: \(helloWorld.mySubString(from: 5))")

打印结果:
subStringTo8: Hello, W
subStringFrom5: , World!

相关文章

  • swift4 字符串截取

    使用 结果012567891234

  • Swift4 字符串截取

    What 现有字符串Hello, World! 想截取前5个字符为子串,一句话写出来,可以这样: 打印结果:sub...

  • Swift4 字符串截取

    Swift 字符串字面量(String literal)介绍 字符串字面量(string literal)是一段双...

  • swift 4.0 自己遇到的一些变化

    自己遇到的一些swift4的变化做一个记录,持续更新添加 字符串String 截取(原subString) 一些属...

  • swift4中字符串的新语法

    Swift3: swift4中直接操作字符串,无须通过characters: swift4中字符串也是一个集合了,...

  • mac 终端常见命令

    切换shell 截取字符串 shell字符串的截取 shell字符串的截取 Shell脚本8种字符串截取方法总...

  • swift-字符串截取 截取指定字符前面或后面的字符串

    截取‘:’前面所有的字符串 截取‘:’前面所有的字符串(结果包含‘:’) 截取':'后面的所有字符串 截取':'后...

  • iOS 字符串常见处理

    一、截取字符串 iOS “字符串” 的几种常见的截取方法(随时更新)iOS截取字符串,分割字符串iOS 截取字符串...

  • OC - NSString

    1.字符串的截取 字符串的截取用: 字符串 +substring..如果开始就截取用from, 如果截取到用to。...

  • OC 字符串的截取

    1、字符串截取 2、从指定位置开始截取n个长度 3、分隔字符串 4、字符串的截取替换 5、替换掉截取某部分的字符串...

网友评论

  • Cocos543:写得很仔细..半年没用swift回头看了一下代码一堆语法不兼容了......

本文标题:Swift4 字符串截取

本文链接:https://www.haomeiwen.com/subject/psvmjxtx.html