2016-09-04 2 views
2

У меня проблема с нелатинскими наборами символов, и мне нужно проверить, что диапазон находится в границах перед выполнением .substringWithRange. Это кажется очень легким, но я не могу найти способ сделать это.Является ли String.substringWithRange в границах?

Учитывая диапазон:

let lastCharRange = currentString.endIndex.predecessor() ..< currentString.endIndex 

Как я могу проверить:

let lastExpected    = expectedString.substringWithRange(lastCharRange) 

находится в пределах?

+0

Ваши фрагменты показывают, что вы пытаетесь использовать индекс из одной строки на другой. Это верно? Это не законно; индексы действительны только для строки, которая их генерировала. –

+0

Да, это правильно, и, наверное, почему у меня такая проблема. Дайте мне минуту, и я уточню свой вопрос, чтобы выразить то, что я пытаюсь сделать. – glenstorey

+0

На самом деле - то, что я пытаюсь сделать, легко, правильный ответ на этот вопрос должен состоять в том, что это не законно. @JoshCaswell, вы хотите сказать это как ответ? – glenstorey

ответ

2

Индексы тесно связаны с String, создавшими их - на самом деле к String «s CharacterView, который является CollectionType. Это справедливо в целом для коллекций.

Итак, вы просто не можете использовать Index, который вы получили от одного String, на другом String.

В зависимости от того, что вы делаете, вам может потребоваться получить подстроку из первой, а затем выполнить поиск второй. Вы также можете получить два String s 'CharacterView s и работать с ними через их интерфейс на основе коллекции: expectedString.characters.last, например.

Смежные вопросы