2016-06-17 3 views
2

각 문자열의 공백을 다듬을 필요가있는 StringArray이 있습니다. for 루프에서 반복하지 않고 간단한 방법으로 알려 주시기 바랍니다.스위프트 - 배열의 문자열 다듬기

예 : ["Apple ", "Bike ", " Cat", " Dog "] 나는 이와 같이 Array이 있습니다. 이 모든 공간을 손질하기 바란다.

+0

는 어떤 옵션을 당신은 생각했다

let items = ["Apple ", "Bike ", " Cat", " Dog "] let trimmed = items.map({ return $0.trimmingCharacters(in: .whitespaces) }) print(trimmed) // ["Apple", "Bike", "Cat", "Dog"] 
? 그게 당신이 알고있는 접근이라면 왜 단순한 루프가 아니겠습니까? – Wain

+0

성능에 영향을주기 때문에 루프를 수행하지 않습니다. 우리는 Swift에서 Filter와 같은 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의 답변에 따라)

는 는