Быстрая токенизация строк

#ios #swift

#iOS #swift

Вопрос:

Почему я могу это сделать

 let dataArray = data.characters.split{$0 == ";"}.map(String.init)
  

и это

 let dataArray = self.dataIn.characters.split{$0 == "rn"}.map(String.init)
  

но я не могу этого сделать?

 let dataArray = data.characters.split{$0 == "; "}.map(String.init)
  

Я хочу найти строку

 "; "
  

Ответ №1:

Итак, вы разделяете символы здесь, поэтому ваш « $0 » — это Character тип. Это означает, что он никогда не может быть равен несимвольному объекту. "; " является строкой, поскольку это не один символ.

При этом, если вы только пытаетесь разделить строку на "; " , вам следует просто использовать строку components(separatedBy:) :

 let dataArray = data.components(separatedBy: "; ")
  

Комментарии:

1. отлично. Спасибо. Когда я изначально искал это в Google, и даже сейчас я получаю решение characters.split в верхней части моего поиска. Кажется, это работает с » r n», поэтому я немного смущен.

2. rn на самом деле соответствует только символам новой строки, поэтому он по-прежнему один Character . Например nn , не будет работать, поскольку это два «символа».