1. 程式人生 > >使用Swift去掉字串中的空格

使用Swift去掉字串中的空格

筆試面試時經常會出這樣的問題:從某個字串中刪除多餘的空格,因為英文是使用空格進行分詞的,而URL中通常會包括非常多的特殊字元,所以這是一種很常用的做法。和OC中一樣,在swift中也可以使用NSCharacterSet類來實現。對於字串刪空格操作,通常有兩種情況:
1.刪掉字串首位的空格:

var str = "  Hello, play    ground    "
let whitespace = NSCharacterSet.whitespaceAndNewlineCharacterSet()
str = str.stringByTrimmingCharactersInSet(whitespace)

NSCharacter中有很多方法,可以用來設定不同的篩選條件,這裡的whitespaceAndNewlineCharacterSet方法用來表示空格。方法stringByTrimmingCharactersInSet如方法名所示,是用來調整字串的輸出的,傳入一個NSCharacter型別。上面的程式碼效果如下:
這裡寫圖片描述
可以看到只是去掉了字串首尾的空格而已。
2.去掉字串首尾的空格,內部連續空格只保留一個:
這種情況也叫擠壓空格,首先依舊執行上面的程式碼去掉首尾的空格,然後呼叫另一個方法把字串存成陣列:

var tempArray = str.componentsSeparatedByCharactersInSet(whitespace)

這個方法的作用是在遇到空格的地方把字串拆開,存入陣列,效果如圖:
這裡寫圖片描述
現在字串中的每一個空格已經單獨被存為了陣列中的一個元素,然後使用filter刪掉這些空格:

tempArray = tempArray.filter{
$0 != ""
}

現在的tempArray如下:
這裡寫圖片描述
最後一步把這個陣列拼接回正常的字串,注意這裡是擠壓並不是刪除,刪除會影響語序,而擠壓只會刪除多餘的空格,所以在拼接的時候要在原來有空格的地方加上一個空格,使用join方法,注意join的用法比較獨特,要想把一個數組拼接成字串,並使用某些字元來拼接,那麼在讓用來拼接的字串呼叫join方法,傳入陣列(有點奇怪):

str = " ".join(tempArray)

最終效果:
這裡寫圖片描述