Python-подобное решение, которое позволяет использовать отрицательный индекс,
var str = "Hello world!"
str[-1] // "!"
может быть:
extension String {
subscript (var index:Int)->Character{
get {
let n = distance(self.startIndex, self.endIndex)
index %= n
if index < 0 { index += n }
return self[advance(startIndex, index)]
}
}
}
Кстати, может быть, стоит перенести целая нотация среза питона
Замена регулярного выражения не может выполнять функцию (например, использование заглавных букв) для совпадений. Вам придется написать сценарий, например, на PHP или JavaScript.
Обновление: См. ответ Йонаса .
Я создал себе веб-страницу под названием Текстовые утилиты , чтобы делать такие вещи:
^ (. *? \ = \ S * \ w) (. *) $
) s, start, rest
return start + rest.toLowerCase ();