Сообщений: 5,670
Тем: 145
Зарегистрирован: Nov 2008
Репутация:
33,771
Доброй ночи, уважаемые девелоперы.
Ночь на дворе, в голову мысли не лезут. Подскажите, каким образом строку разобрать по такому типу:
[src=java]String = "atata"; // все символы английские [/src]
допустим, буква "a" английская отображается так же, как и русская "а". Мне нужно записать в List все варианты таких слов.
В долгу не останусь.
Сообщений: 1,912
Тем: 56
Зарегистрирован: Jan 2009
Репутация:
12,921
[STIGMATED];221490 Написал:Доброй ночи, уважаемые девелоперы.
Ночь на дворе, в голову мысли не лезут. Подскажите, каким образом строку разобрать по такому типу:
[src=java]String = "atata"; // все символы английские [/src]
допустим, буква "a" английская отображается так же, как и русская "а". Мне нужно записать в List все варианты таких слов.
В долгу не останусь.
какие варианты я чет непонял
Сообщений: 5,670
Тем: 145
Зарегистрирован: Nov 2008
Репутация:
33,771
Укоротим слово для простоты - "at";
Получится 2 варианта:
а(русская) t
a(английская) t
Сообщений: 827
Тем: 82
Зарегистрирован: Jan 2012
Репутация:
797
По-моему никак т.к. нельзя просто так взять и связать 2 алфавита
Nope
Сообщений: 183
Тем: 8
Зарегистрирован: Dec 2011
Репутация:
89
Гугл говорит что совпадающих символов всего 12, походу нужно просто сделать соответствие 12 англ символов utf-16 c русскими и дальше вставлять все возможные
Сообщений: 1,912
Тем: 56
Зарегистрирован: Jan 2009
Репутация:
12,921
ну по идеи - проверять можно Кодировку - и русские символы.
А по проще, и более адекватней, создать масив с русскими буквами , и если нужно и с английскими , и не игратся
Сообщений: 144
Тем: 9
Зарегистрирован: Jul 2012
Репутация:
2,152
08-28-2012, 01:14 AM
(Сообщение последний раз редактировалось: 08-28-2012, 01:27 AM Camelion.)
Попробуй, вроде работает.
Открыть спойлер
Код[SRC="java"]private static final char[][] CHARS = {
{'A', 'A'},
{'B', 'В'},
{'C', 'С'},
{'E', 'Е'},
{'H', 'Н'},
{'K', 'К'},
{'M', 'М'},
{'O', 'О'},
{'P', 'Р'},
{'T', 'Т'},
{'X', 'Х'},
{'a', 'а'},
{'c', 'с'},
{'e', 'е'},
{'o', 'о'},
{'p', 'р'},
{'x', 'х'},
};
public static void main(String[] args) {
String str = "tttaaa";
List<String> variantsList = new ArrayList<>();
char rr = replacementFor(str.charAt(0));
if (rr == '\0') {
variantsList.add(String.valueOf(str.charAt(0)));
} else {
//variantsList.add(String.valueOf(str.charAt(0)));
variantsList.add(String.valueOf(rr));
}
for (int i = 0; i < str.length(); i++) {
List<String> tempList = new ArrayList<>();
tempList.addAll(variantsList);
variantsList.clear();
char ch = str.charAt(i);
char r = replacementFor(ch);
if (r != '\0') {
for (String ss : tempList) {
variantsList.add(ss.substring(0, i) + ch);
variantsList.add(ss.substring(0, i) + r);
}
//variantsList.add(str.substring(0, i) + ch);
//variantsList.add(str.substring(0, i) + r);
} else {
for (String ss : tempList) {
variantsList.add(ss.substring(0, i) + ch);
}
//variantsList.add(str.substring(0, i) + ch);
}
}
for (String ss : variantsList) {
System.out.println(ss);
}
}
static char replacementFor(char ch) {
for (char cs[] : CHARS) {
if (cs[0] == ch) return cs[1];
else if (cs[1] == ch) return cs[0];
}
return '\0';
}[/SRC]
Открыть спойлер
Тест
CHARS = {{'0', '1'}};
String str = "000";
OUT:
Код: 000
001
010
011
100
101
110
111
Сообщений: 5,670
Тем: 145
Зарегистрирован: Nov 2008
Репутация:
33,771
Camelion, а вот за это огромное спасибо. Тема исчерпана.
|