Идея, лежащая в основе решения:
Вы хотите разбивать вашу строку на массив при каждом появлении ,
, учитывая данные, содержащиеся в "
как один элемент.
ToДля этого вам нужно использовать глобальную split
функцию с шаблоном регулярных выражений .
Пример кода:
extension String
{
func splitCommas() -> [Stirng] {
let pattern = ",(?=(?:[^\\\"]*\\\"[^\\\"]*\\\")*[^\\\"]*\$)" //regex pattern for commas that are not within quotes
if let regex = try? NSRegularExpression(pattern: pattern, options: []) {
let string = self as NSString
return regex.matches(in:inputString, range: NSMakeRange(0, inputString.utf16.count)).map {
string.substring(with: $0.range).replacingOccurrences(of: ",", with: "") //removing all instances of commas
}
}
return []
}
}
Надеюсь, это поможет!;)
Обновления
Обновлен код до более современного примера.
Также реализована функция как расширение String для удобства использования во всех переменных String.