如何将for-each循环应用于String中的每个字符?
所以我想迭代string中的每个字符。
所以我认为:
for (char c : "xyz") 但是我得到一个编译器错误:
 MyClass.java:20: foreach not applicable to expression type 
我怎样才能做到这一点?
 对于String每个char的最简单的方法是使用toCharArray() : 
 for (char ch: "xyz".toCharArray()) { } 
 这给了你每个构造的简洁,但不幸的是String (它是不可变的)必须执行一个防御拷贝来生成char[] (这是可变的),所以有一些成本的惩罚。 
从文档 :
[
toCharArray()返回一个新分配的字符数组,其长度是该string的长度,其内容被初始化为包含该string表示的字符序列。
 有更详细的方法来迭代数组中的字符(循环toCharArray() , CharacterIterator等),但是如果您愿意花费toCharArray()的成本 – 每个都是最简洁的。 
 String s = "xyz"; for(int i = 0; i < s.length(); i++) { char c = s.charAt(i); } 
 您需要使用String类的toCharArray ()方法将String对象转换为一个char数组: 
 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); } 
 如果使用Java 8,则可以使用String上的chars()来获取字符Stream ,但是需要将int回char因为chars()返回IntStream 。 
 "xyz".chars().forEach(i -> System.out.print((char)i)); 
 如果您将Java 8与Eclipse Collections一起使用,则可以使用带有lambda或方法引用的CharAdapter类forEach方法遍历String所有字符。 
 CharAdapter.adapt("xyz").forEach(c -> System.out.print(c)); 
这个特定的例子也可以使用方法引用。
 CharAdapter.adapt("xyz").forEach(System.out::print) 
注意:我是Eclipse集合的提交者。
另一个有用的解决scheme,你可以使用这个string作为数组
 for (String s : "xyz".split("")) { System.out.println(s); } 
 对于Travers一个string,你也可以在string中使用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中的string处理方法,它有助于遍历string的特定字符。