Swift - разделение текста на основе арабских комбинированных символов - PullRequest
2 голосов
/ 19 сентября 2019

Уважаемые,

У меня есть арабское предложение, подобное этому stentence

أكل الولد التفاحة

как я могу разбить предложение на основе символов UNCONNECTED длябыть таким:

أ -

ا - لو - لد

ا - لتفا - حة

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

Как я могу сделать это, используя swift код для IOS?

Обновление : Iне заботиться о местах.«أكل», например, это одно слово и не содержит пробелов. Я хочу разделить на основе символов UNCONNECTED.Таким образом, «أكل» состоит из двух объектов: «أ» и «كل»

الولد: три объекта «ا» и «لو» и «لد»

Ответы [ 4 ]

0 голосов
/ 25 сентября 2019

Я не знаю, как принятый ответ помогает решить проблему.

Apple уже предоставила Natural Language Framework для обработки таких вещей, которые заслуживают большего доверия

Когда вы работаете с текстом на естественном языке, часто бывает полезно разбить текст на отдельные слова.Использование NLTokenizer для перечисления слов, а не просто разбиение компонентов по пробелам, обеспечивает правильное поведение в нескольких сценариях и языках.Например, ни китайский, ни японский не используют пробелы для разделения слов.

Вот пример

let text = """
All human beings are born free and equal in dignity and rights.
They are endowed with reason and conscience and should act towards one another in a spirit of brotherhood.
"""

let tokenizer = NLTokenizer(unit: .word)
tokenizer.string = text

tokenizer.enumerateTokens(in: text.startIndex..<text.endIndex) { tokenRange, _ in
    print(text[tokenRange])
    return true
}

Вот ссылка Документы Apple

Надеюсь, это полезно

0 голосов
/ 19 сентября 2019

Используйте следующий код:

let a = "أكل الولد التفاحة".split(separator: " ")
0 голосов
/ 19 сентября 2019

Вы можете заменить пробелы на «-», используя функцию замены вхождений.

let text = "أكل الولد التفاحة".replacingOccurrences(of: " ", with: "-", options: NSString.CompareOptions.literal, range: nil) ?? ""
0 голосов
/ 19 сентября 2019

Попробуйте это:

"أكل الولد التفاحة".map {String($0)}
...