Я пытаюсь переписать код С#, который я написал ранее для Swift.
public static string Right( string value, int length)
{
if (String.IsNullOrEmpty(value)) return string.Empty;
return value.Length <= length ? value : value.Substring(value.Length - length);
}
Я не могу написать оператор if эффективно быстро.
Дублирую пост, проверьте в репозитории.
В Swift
вы можете написать,
func right(value: String, length: Int) -> String {
if value.count <= length {
return value
} else {
let index = value.index(value.startIndex, offsetBy: value.count-length)
return String(value[..<index])
}
}
Нет необходимости проверять empty string
. Это будет описано в самом else condition
.
Пример:
right(value: "abcdefgh", length: 3) //abcde
Это можно сделать так просто:
func right(value: String, length: Int) -> String {
guard value.count > length, length > 0 else { return value }
return String(
value.dropLast(length) // we just drop `length` number of elements from the end
)
}
Использование prefix
и ?: в качестве однострочника
func right(value: String, length: Int) -> String {
return value.count > length ? String(value.prefix(value.count - length)) : value
}
Возможный дубликат Проверить пустую строку в Swift?