2016-06-17 10 views
2

私はStringArrayを持っています。各文字列のスペースをトリムする必要があります。 forループでループすることなく簡単な方法で教えてください。Swift - 配列内の文字列をトリミングする

例:["Apple ", "Bike ", " Cat", " Dog "] 私はこのようにArrayを持っています。私はこれらのスペースをすべて切り取って欲しいです。

+0

は、どのようなオプションあなたは検討していますか?それがあなたが知っているアプローチなら、なぜ単純なループではないのですか? – Wain

+0

パフォーマンスに影響を与えるためにループしたくありません。私たちはSwiftの多くのオプションを持っているので、フィルタのようなSet Propertiesとオプションの種類を列挙して、私はこの種類のフィーチャを探しています( – Bharathi

+1

)?あなたの配列にいくつのアイテムがありますか?あなたが明示的にそれを書いていなくても、あなたがすることはループを伴います... – Wain

答えて

11

これはmapの良いアプリケーションです。配列内の各項目を取得し、trimmingCharacters(in:)を適用して、文字列の末尾から空白を削除します。

import Foundation // or UIKit or Cocoa 

let array = ["Apple ", "Bike ", " Cat", " Dog "] 
let trimmed = array.map { $0.trimmingCharacters(in: .whitespaces) } 

print(trimmed) // ["Apple", "Bike", "Cat", "Dog"] 

DuncanCさんのコメント@私はここでそれを強調しています重要なポイントです:マップ文のvacawamaの使用@

は を使用するよりも確かに多くの「スウィフト様」でありますforループですが、パフォーマンスはすべて同じだと思います。ここに の魔法はありません。配列内のすべての文字列をチェックし、先行/後続スペースを にする必要がある場合は、 のすべての文字列を反復処理する必要があります。それはmapステートメントが内部的に行うものです。それは命令的な構文ではなく機能 を使用するだけです。

+0

あなたの答えをありがとう..私はそれを探しています。 – Bharathi

+0

また別の方法があります。私はここに別の答えとして投稿しています。 – Bharathi

+0

これは、おそらくあなたが得ることができる最も速く、最も重要な解決策です。 –

-2

私たちは文字列として配列を結合することができ、スペースを置き換えることができます。

と同様に、

let array = ["Apple ", "Bike ", " Cat", " Dog "] 
var jointString = array.joinWithSeparator(",") 
jointString = jointString.stringByReplacingOccurrencesOfString(" ", withString: "") 

let newArray = jointString.componentsSeparatedByString(",") 
print(newArray) 
+1

これは実際には3つの異なるループです... – Wain

+1

これはあまりエレガントではなく、最も重要なことに、パフォーマンス面では、@ vacawamaの回答よりもはるかに効率的ではありません。なぜこれを好むのか分かりません。 – Moritz

0

スウィフト3-4互換性

(@のvacawamaの回答に基づいて)

let items = ["Apple ", "Bike ", " Cat", " Dog "] 
let trimmed = items.map({ 
    return $0.trimmingCharacters(in: .whitespaces) 
}) 
print(trimmed) // ["Apple", "Bike", "Cat", "Dog"] 
関連する問題