! важные встроенные стили в реакции

Строки в Свифте могут быть определенно сложными. Если вам нужен чистый метод Swift, вот как бы я это сделал:

  1. Используйте find , чтобы найти последнее вхождение "." в reverse строки
  2. Используйте advance , чтобы получить правильный индекс "." в исходной строке
  3. Используйте функцию String subscript, которая принимает IntervalType, чтобы получить строки
  4. Пакет все это в функции, которая возвращает необязательный кортеж имени и расширения

Что-то вроде этого:

func splitFilename(str: String) -> (name: String, ext: String)? {
    if let rDotIdx = find(reverse(str), ".") {
        let dotIdx = advance(str.endIndex, -rDotIdx)
        let fname = str[str.startIndex..

Который будет использоваться как:

let str = "/Users/me/Documents/Something.something/text.txt"
if let split = splitFilename(str) {
    println(split.name)
    println(split.ext)
}

Какие выходы:

/Users/me/Documents/Something.something/text
txt

Или, просто используйте имеющиеся методы NSString , такие как pathExtension и stringByDeletingPathExtension .

15
задан Felix Kling 15 April 2014 в 05:57
поделиться