プログラマー技術調査室

うだつのあがらないプログラマーが技術調査結果を掲載するブログです。

文字列の右端の空白を削除する

swiftってRTrim関数が無いみたいですね。

入力値の末尾の空白を削除するのって、ビジネスアプリケーション開発では一般的な仕様だと認識していましたが、標準関数に無いということはローカルな文化なのかもしれません。


という訳で、とりあえず今回の要件は「文字列の右端の空白を削除する」です。
両端ではありません、右端だけです。

"  test  ""  test"という具合に変換したいのです。

swiftには両端を削除する標準関数は存在しますが、右端だけ、左端だけ、という関数は存在しないようです。

自力で作ってみました。

let targetString: NSString = "   Test    "
var checkString: String
var rtrimLength: Int = 0

for var i = targetString.length - 1; i >= 0; i -= 1 {
    
    checkString = NSString(string: targetString.substringFromIndex(i)).substringToIndex(1)
    
    if ((checkString != " ") && (checkString != " ")) {
        
        rtrimLength = i + 1
        break
        
    }
    
}

if rtrimLength > 0 {
    
    print(targetString.substringToIndex(rtrimLength))
    
}


以上です。
もっとスマートなやり方があったら教えて下さい。

余談ですが、String型とNSString型の違いがわずらわしいです。
機能的にはNSStringに統一してほしいですねえ・・・