Ограничьте длину строки, обеспечив при этом корректность Юникода.JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Ограничьте длину строки, обеспечив при этом корректность Юникода.

Сообщение Anonymous »

Я хочу ограничить длину строки, гарантируя при этом достоверность Unicode.
В Java я использую эту функцию - https://stackoverflow.com/a/70208806/72437
Java

Код: Выделить всё

public static int length(String string) {
if (string == null) {
return 0;
}
return string.length();
}

public static String limitLength(String string, int maxLength) {
int stringLength = length(string);

if (stringLength  maxLength) {
break;
}

codePointList.add(codePoint);

offset += charCount;
}

int[] codePoints = new int[codePointList.size()];

for (int i = 0; i < codePoints.length; i++)
{
codePoints[i] = codePointList.get(i);
}

String result = new String(codePoints, 0, codePoints.length);

return result;
}
Вот результат

Код: Выделить всё

String s = "🇺🇸👨‍👩‍👧éन्म👨‍💻क्षि";
for (int i=1; i
2 -> 🇺
3 -> 🇺
4 -> 🇺🇸
5 -> 🇺🇸
6 -> 🇺🇸👨
7 -> 🇺🇸👨‍
8 -> 🇺🇸👨‍
9 -> 🇺🇸👨‍👩
10 -> 🇺🇸👨‍👩‍
11 -> 🇺🇸👨‍👩‍
12 -> 🇺🇸👨‍👩‍👧
13 -> 🇺🇸👨‍👩‍👧é
14 -> 🇺🇸👨‍👩‍👧éन
15 -> 🇺🇸👨‍👩‍👧éन्
16 -> 🇺🇸👨‍👩‍👧éन्म
17 -> 🇺🇸👨‍👩‍👧éन्म
18 -> 🇺🇸👨‍👩‍👧éन्म👨
19 -> 🇺🇸👨‍👩‍👧éन्म👨‍
20 -> 🇺🇸👨‍👩‍👧éन्म👨‍
21 -> 🇺🇸👨‍👩‍👧éन्म👨‍💻
22 -> 🇺🇸👨‍👩‍👧éन्म👨‍💻क
23 -> 🇺🇸👨‍👩‍👧éन्म👨‍💻क्
24 -> 🇺🇸👨‍👩‍👧éन्म👨‍💻क्ष
25 -> 🇺🇸👨‍👩‍👧éन्म👨‍💻क्षि
26 -> 🇺🇸👨‍👩‍👧éन्म👨‍💻क्षि
27 -> 🇺🇸👨‍👩‍👧éन्म👨‍💻क्षि
28 -> 🇺🇸👨‍👩‍👧éन्म👨‍💻क्षि
29 -> 🇺🇸👨‍👩‍👧éन्म👨‍💻क्षि
В Swift он лучше обрабатывает Юникод
Swift

Код: Выделить всё

extension String {
func prefix(_ maxLength: Int) -> String {
let substring: Substring = self.prefix(maxLength)
return String(substring)
}
}

let text = "🇺🇸👨‍👩‍👧éन्म👨‍💻क्षि"
for i in (1...10) {
print(">>>> text \(i) : \(text.prefix(i))")
}

>>>> text 1 : 🇺🇸
>>>> text 2 : 🇺🇸👨‍👩‍👧
>>>> text 3 : 🇺🇸👨‍👩‍👧é
>>>> text 4 : 🇺🇸👨‍👩‍👧éन्म
>>>> text 5 : 🇺🇸👨‍👩‍👧éन्म👨‍💻
>>>> text 6 : 🇺🇸👨‍👩‍👧éन्म👨‍💻क्षि
>>>> text 7 : 🇺🇸👨‍👩‍👧éन्म👨‍💻क्षि
>>>> text 8 : 🇺🇸👨‍👩‍👧éन्म👨‍💻क्षि
>>>> text 9 : 🇺🇸👨‍👩‍👧éन्म👨‍💻क्षि
>>>> text 10 : 🇺🇸👨‍👩‍👧éन्म👨‍💻क्षि
Могу ли я узнать, как я могу улучшить свою версию кода Java, чтобы она вела себя аналогично версии Swift?

Подробнее здесь: https://stackoverflow.com/questions/792 ... e-validity
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»