2014-12-17 3 views
2

У меня есть переменная, у которой есть строка, в которой есть массив. Как преобразовать его в массив снова в swift?Преобразование строки обратно в массив

var featCatName2 = "[home, pages, books, stores, groups, trips]" 

Измени:

var featCatName2 = [home, pages, books, stores, groups, trips] 
+0

* Почему вы храните массив как строку, подобную этой? Что делать, если одна из строк содержит запятую? –

ответ

4

Короткий ответ это один вкладыш:

var featCatName2 = "[home, pages, books, stores, groups, trips]" 
let result = featCatName2.stringByTrimmingCharactersInSet(NSCharacterSet(charactersInString: "[]")).componentsSeparatedByString(", ") 

Это также безопасно звонить, даже если массив пуст :)

  1. var featCatName2 = "[home, pages, books, stores, groups, trips]"
    Объявить ваша строка "массив"
  2. featCatName2 = featCatName2.stringByTrimmingCharactersInSet(NSCharacterSet(charactersInString: "[]"))
    Срежьте [] в обоих концах.
  3. let result = featCatName2.componentsSeparatedByString(", ")
    Разверните строку в массив строк.
+1

Я просто собирался это предложить. Я бы, наверное, сделал это двумя лайнерами. – cmyr

+0

Да, это было именно то, что я искал благодаря! – Tom

1
public extension String { 
    var count: Int { 
     return countElements(self) 
    } 

    subscript (i: Int) -> String { 
     return String(Array(self)[i]) 
    } 
    subscript (r: Range<Int>) -> String { 
     var start = advance(startIndex, r.startIndex) 
     var end = advance(startIndex, r.endIndex) 
     return substringWithRange(Range(start: start, end: end)) 
    } 
} 

var featCatName2 = "[home, pages, books, stores, groups, trips]" 

let resultArray = featCatName2[1...featCatName2.count-2].componentsSeparatedByString(", ") // ["home", "pages", "books", "stores", "groups", "trips"] 
Смежные вопросы