Swift, stringByReplacingOccurencesOfString и заменить массив

Мне нужно заменить числовые символы. Я имею в виду, что я хочу заменить английский char на бенгальский чат в строке. Допустим, у меня есть два массива,

var enDigits = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "0"] а также
var bnDigits = ["১", "২", "৩", "৪", "৫", "৬", "৭", "৮", "৯", "০"],

Я в новинку в iOS & определенно в быстром. В PHP str_replace() может сделать это легко. Тем не менее, я ищу и нашел stringByReplacingOccurencesOfString для быстрой, но не могу понять, может ли это работать с массивом. Мне нужен твой совет.

0

Решение

Это довольно конкретный ответ, но если вы просто хотите заменить символ на символ, вы можете использовать map функция в вашей исходной строке, например:

let enDigits: [Character] = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "0"]
let bnDigits: [Character] = ["১", "২", "৩", "৪", "৫", "৬", "৭", "৮", "৯", "০"]

let enString = "Jenny's number is 867-5309"let bnString = String(map(enString, { ch in
if let index = find(enDigits, ch) {
return bnDigits[index]
}
return ch
}))
// Jenny's number is ৮৬৭-৫৩০৯
4

Другие решения

Если вы действительно хотите конвертировать в бенгальские цифры, Какао предоставляет API для выполнения ICU трансформируется:

var string = "Jenny's number is 867-5309"let transform = "[:Number:]; Any-Latin; Latin-Bengali"
let cfstr = NSMutableString(string: String(string)) as CFMutableString
var range = CFRangeMake(0, CFStringGetLength(cfstr))
CFStringTransform(cfstr, &range, ((transform as NSString) as CFString), 0)

println(cfstr) // Jenny's number is ৮৬৭-৫৩০৯
2

По вопросам рекламы [email protected]