Swift

Swift:NSStringで正しく文字列を抽出

2バイトコードが混ざると文字列が正しく抽出されない問題の解決方法がわかりました。

pStringに相当する文字数分を抽出するメソッドです。同じ文字列を抽出するのではなく、あくまでも最後の文字列を指定文字数分抜き出す機能です。

よろしくない例:
func CallPickupLastWords3(pSource:String, pString:String) -> String {
let wInx:Int = pSource.characters.count – pString.characters.count
return (pSource as NSString).substringFromIndex(wInx)
}

正しい結果が得られる例:
func CallPickupLastWords1(pSource:String, pString:String) -> String {
let wInx:Int = pSource.characters.count – pString.characters.count
return (pSource.substringFromIndex(pSource.startIndex.advancedBy(wInx)))
}

よろしくない例では、var rtn = CallPickupLastWords3(“😃a54321Tests”, pString:”Tests”)を実行すると、”1Tests”が返ってきます。Xcode7からadvanceがこのような書き方になったそうです。

今回、folderpathの最後の文字列を判断する箇所で、英数字の並びならOKなのに日本語のpathの場合、結果がNGになるケースが発生し、場所をつきとめたらここでした。一旦、文字列を1文字ずつ取り出すよう修正したのですが、もう一回NSStringに戻し、様子を伺いたいと思います。

スクリーンショット 2015-12-06 20.19.45

Categories: Swift, 技術