8 ответов:
самый простой способ для каждого
charнаStringиспользоватьtoCharArray():for (char ch: "xyz".toCharArray()) { }это дает вам краткость для каждой конструкции, но к сожалению
String(который является неизменяемым) должен выполнить защитную копию для созданияchar[](что изменчиво), поэтому есть некоторые штрафные санкции.С документация:
[
toCharArray()возвращает] недавно выделенный массив символов длина которого является длиной этой строки и содержимое которой инициализируется, чтобы содержать последовательность символов, представленную этой строкой.есть более подробные способы перебора символов в массиве (обычный цикл for,
CharacterIteratorи т. д.) Но если вы готовы оплатить стоимостьtoCharArray()для-Каждый является наиболее кратким.
вам нужно преобразовать объект String в массив символов с помощью
toCharArray() метод класса String:String str = "xyz"; char arr[] = str.toCharArray(); // convert the String object to array of char // iterate over the array using the for-each loop. for(char c: arr){ System.out.println(c); }
еще одно полезное решение, вы можете работать с этой строкой как массив String
for (String s : "xyz".split("")) { System.out.println(s); }
на Java 8 мы можем решить это так:
String str = "xyz"; str.chars().forEachOrdered(i -> System.out.print((char)i));метод chars () возвращает значение
IntStreamкак говорится в doc:возвращает поток int ноль-расширение значений char из этого последовательность. Передается любой символ, который сопоставляется с суррогатной кодовой точкой через неинтерпретированный. Если последовательность мутировала во время потока при чтении результат не определен.
зачем использовать
forEachOrderedи неforEach?поведение
forEachявно недетерминирован, где какforEachOrderedвыполнить действие для каждого элемента этого потока, в порядок встречи потока если поток имеет определенный порядок встречи. Так чтоforEachне гарантирует, что заказ будет храниться. Также проверьте это вопрос дополнительные.мы могли бы также использовать
codePoints()чтобы напечатать, смотрите это ответ для более подробной информации.
если вы используете Java 8, вы можете использовать
chars()наStringиStreamсимволов, но вам нужно будет броситьintобратно вcharкакchars()возвращаетIntStream."xyz".chars().forEach(i -> System.out.print((char)i));если вы используете Java 8 с Коллекции Eclipse можно использовать
CharAdapterклассforEachметод с лямбда или ссылкой на метод для итерации по всем символам вString.CharAdapter.adapt("xyz").forEach(c -> System.out.print(c));этот конкретный пример также может использовать метод ссылка.
CharAdapter.adapt("xyz").forEach(System.out::print)примечание: Я являюсь коммиттером для коллекций Eclipse.
вы также можете использовать лямбда в этом случае.
String s = "xyz"; IntStream.range(0, s.length()).forEach(i -> { char c = s.charAt(i); });
для Трэверса строка, которую вы также можете использовать
charAt()С строку.как :
String str = "xyz"; // given String char st = str.charAt(0); // for example we take 0 index element System.out.println(st); // print the char at 0 index
charAt()- Это метод обработки строк в java, который помогает траверсу строки для конкретного символа.
Comments