Swift3.0 字符串

来源:互联网 发布:windows 画图命令 编辑:程序博客网 时间:2024/05/24 04:20

其实很喜欢学习到新东西时候的那种满足感,虽然是如此的初级,就像之前学习HTML的时候一样,真好

举个例子来说明吧,刚才用到的一个例子

把字符串

var str = "Twigs x3, Rocks x3, Rope x2"

转化成

[    (name: "Twigs", count: "3"),    (name: "Rocks", count: "3"),    (name: "Rope", count: "2"),]

这个样子的

首先,分割

这个字符串是以 , 为间隔的,所以我们就以它为分割

//最近发现一个正规的新方法,这下面是以前初学Swift的时候用的var strArr = str.components(separatedBy: "_")// 有两种方法 .components(separatedBy: String) .components(separatedBy: CharacterSets)// OLD ONEvar strArr = str.characters.split(separator: ",").map( {String($0)} )// 前面不需要多说 characters.split(separator: ",") 就是以 `,` 进行分割,返回数组,此时返回的并不是String// 后面的 map({}) 是`数组`的一个转化函数,接收函数作为参数, $0 表示 函数的第一个参数。

此时的 strArr 是这样的,后两个前面都有空格

Twigs x3 Rocks x3 Rope x2

所以

去前后的空格

去空格用到一个 StringtrimmingCharacters(in: CharacterSet) 方法,接收一个字符集合,这里我们需要含有空格的 String.whitespaces set

for tempStr in strArr{    tempArr = tempStr.trimmingCharacters(in: String.whitespaces).characters.split(separator: " ").map({String($0)})    // 我就不再冗述了,上面就是获取去掉空格的字符串之后又分割一遍    // 此时还在循环内,tempArr 里面是这样的 ["Twigs","x3"]    // 此时,需要把第二个的 `x` 给去掉}

remove(at: String.Index)

这个,我还是在下面说吧,.remove 接收字符index 然后去掉 这个位置的字符,返回 的是 去掉这个字符后的字符串

所以,接着上面的我们先等到 x 的位置

let index = tempArr[1].characters.indexof("x")// 然后去掉这个位置的 字符tempArr[1].remove(at: index)

完整的代码是这样的

func getCraftMaterials(crafting: String) -> [(name: String, count: String)]{    let cc = crafting.characters.split(separator: ",").map({String($0)})    var arr:[(name: String, count: String)] = []    for tempStr in cc{        let tempArr = tempStr.trimmingCharacters(in: CharacterSet.whitespaces).characters.split(separator: " ").map({String($0)})        var count = tempArr[1]        if let xPosition = count.characters.index(of: "x"){            count.remove(at: xPosition)        }        arr.append((tempArr[0],count))    }    return arr}