Java-Как я могу снять один символ в строке и сохранить их в одномерном массиве? - PullRequest
0 голосов
/ 02 апреля 2011

У меня есть строка "301918574X", и я хочу сохранить каждую букву в массиве с 3 в первом слоте, 0 во втором слоте, 1 в третьем слоте и т. Д.

Как бы я поступил так?

EDIT:

Теперь у меня есть каждый символ, назначенный соответствующему слоту массива. Но в массиве есть одна буква, и это "X" (на самом деле это ISBN). Когда есть X, он должен иметь значение 10, но очевидно, что он не будет работать в массиве символов.

Ответы [ 5 ]

4 голосов
/ 02 апреля 2011
char[] theArrayYouWant = str.toCharArray();
0 голосов
/ 02 апреля 2011

Чтобы «делать математику» с вашими персонажами, сохраняйте их не как char, а как int.

Вот пример:

int[] digits = new int[str.length()];
for(int i : 0; i < str.length -1; i++) {
    digits[i] = Character.digit(str.charAt(i), 10);
}
char last = str.charAt(str.length()-1);
if(last == 'X')
   digit[digits.length-1] = 10;
else
   digit[digits.length-1] = Character.digit(last, 10);

(только в ISBNпоследняя цифра может быть X.)

0 голосов
/ 02 апреля 2011

Если вам просто нужен индексированный доступ, вы можете использовать String.charAt(). Если вам действительно нужен массив, используйте String.toCharArray().

0 голосов
/ 02 апреля 2011
String testString="301918574X";
char[] resultArray = new char[12];

for (int i=0;i<testString.length();i++)
{
  resultArray[i] = testString.charAt(i);
}
0 голосов
/ 02 апреля 2011

Вы ищете String.toCharArray().Как указывает документация , «он возвращает вновь выделенный символьный массив, длина которого равна длине строки и содержимое которого инициализировано, чтобы содержать последовательность символов, представленную строкой.»

Документация по API для платформы должна быть первым ресурсом, на который следует обратить внимание, задаваясь вопросом, поддерживает ли класс определенную операцию напрямую.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...