2016-12-18 2 views
1

Я пишу приложение в Android Studio, которое может подсчитывать вхождения каждой буквы предложения. Пример:Инициализировать символы Unicode динамически

// Input 
String sentence = "abbdddd"; 

// Output 
a:1; b:2; c:0; d:4; e:0; f:0; // And so on 

Однако, я также хочу, чтобы рассчитывать на амхарском языке символов, так что если я ставлю в:

String sentence = "abcሀሁሂ"; 

Это дало бы мне:

a:1; b:1; c:1 ... ሀ:1; ሁ:1; ሂ:1; 

На данный момент, я имеют два ArrayLists, цикл и letterCount. Цикл имеет все возможные символы, которым может быть любая буква введенного предложения. letterCount имеет тот же размер, что и цикл, а во время выполнения каждое значение равно нулю. Когда вы вводите предложение, он ищет любые совпадения в цикле (что, если письмо является английским или амхарским, оно должно найти). Когда он найдет совпадение, он перейдет к letterCount и добавит его к соответствующему значению. Итак, если первая буква в предложении «a», то она переходит к первому значению letterCount и добавляет одно. Если это «c», то он переходит к третьему значению letterCount и добавляет его. Значения внутри цикла и letterCount добавляются динамически, используя для цикла:

for (int i = 97; i < 123; i++) { 
     char val = (char)i; // This is where the problem lies...I think 
     cycle.add(val); 
     letterCount.add(0); 
    } 

Однако, делая «(символ) я» преобразует его в ASCII-символ, который не включает в себя Амхарский символов. Итак, есть ли способ, вместо того, чтобы перебирать через ASCII, перебирать символы юникода и добавлять их в цикл? Любая помощь будет принята с благодарностью.

ответ

1

Юникод в диапазоне от U + 1200 до U + 137F охватывает Эфиопический, а также амхарский, поэтому он существует в BMP (Basic Multilingual Plane) и может быть представлен 16-битным значением.

делать "(полукокс) я" преобразует его в ASCII-символ [???]

Ложные. В отличие от некоторых других языков, char в Java имеет размер 2 байта, поэтому этого достаточно для ваших целей.

Для получения дополнительной информации см .: Comparing a char to a code-point?

+0

Спасибо за ваш ответ! Однако я имел в виду, что из того, что я искал, значения unicode для Amharic включают буквы (например: \ u126B), и я не уверен, как прокручивать буквы, а также цифры. Я также не хочу жестко указывать его в ArrayLists, потому что есть много амхарских символов. Должен ли я изменить свой вопрос? –

+0

Я все еще не уверен, что вы пытаетесь спросить. Вам нужно решить, как точно выразить, какие части вы не знаете, как это сделать. Например, вы понимаете, что кодовое обозначение Unicode может быть записано как целое число с шестнадцатеричным литералом? 'int i = 0x126B' –

+0

Я решил это сейчас. То, что мне было нужно, было каким-то образом (dosen't должен быть unicode), чтобы преобразовать числа в соответствующие символы. Код, который я использовал, следующий: for (int i = 4608; i <4954; i ++) {char val = (char) i; cycle.add (вал); letterCount.add (0);} Я не хотел никаких букв, потому что хотел поместить его в цикл for и прокрутить его. В любом случае, спасибо за вашу помощь! :) –

Смежные вопросы