如何将String值转换为InputStreamReader?
所以我想迭代字符串中的每个字符.
所以我认为:
for (char c : "xyz")
Run Code Online (Sandbox Code Playgroud)
但是我收到编译错误:
MyClass.java:20: foreach not applicable to expression type
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
在Java中,迭代字符串中所有字符的最快方法是什么,这:
String str = "a really, really long string";
for (int i = 0, n = str.length(); i < n; i++) {
char c = str.charAt(i);
}
Run Code Online (Sandbox Code Playgroud)
或这个:
char[] chars = str.toCharArray();
for (int i = 0, n = chars.length; i < n; i++) {
char c = chars[i];
}
Run Code Online (Sandbox Code Playgroud)
编辑:
如果重复调用的成本是什么,我想知道的是charAt长迭代期间方法最终是要么不是比执行一个调用的成本小于或大于toCharArray开头,然后直接在迭代期间访问阵列.
如果有人能够为不同的字符串长度提供强大的基准测试,考虑到JIT预热时间,JVM启动时间等等,而不仅仅是两次调用之间的差异,那就太棒了System.currentTimeMillis().
试图理解现代Unicode的微妙之处让我头疼.特别是,代码点,字符,字形和字形之间的区别 - 在最简单的情况下,当使用ASCII字符处理英文文本时,所有这些概念彼此之间都存在一对一的关系 - 这给我带来了麻烦.
看看这些术语如何在像Matthias Bynens的JavaScript这样的文档中使用有一个unicode问题或Wikipedia关于Han统一的文章,我收集到这些概念不是一回事,并且将它们混淆是危险的,但我有点像努力去理解每个术语的含义.
Unicode Consortium提供了一个词汇表来解释这些东西,但它充满了"定义",如下所示:
抽象字符.用于组织,控制或表示文本数据的信息单元....
...
性格....(2)抽象字符的同义词.(3)Unicode字符编码的基本编码单位....
...
雕文.(1)表示一个或多个字形图像的抽象形式.(2)字形图像的同义词.在显示Unicode字符数据时,可以选择一个或多个字形来描绘特定字符.
...
Grapheme.(1)在特定书写系统的背景下最低限度的独特写作单位....
这些定义中的大多数都具有非常学术和正式的声音质量,但缺乏任何意义的质量,或者将定义问题推迟到另一个词汇表条目或标准部分.
因此,我寻求那些比我学得更多的人的神秘智慧.这些概念中的每一个究竟是如何彼此不同的,在什么情况下它们之间不会有一对一的关系?
所以我知道String#codePointAt(int),但它是由char偏移索引,而不是由代码点偏移索引.
我正在考虑尝试这样的事情:
String#charAt(int)得到char的指数char在高代理范围内
String#codePointAt(int)获取代码点,并将索引增加2char值作为代码点,并将索引递增1但我担心的是
char值或一个值我知道这些方法的执行顺序不同,但在我的所有测试中,我都无法实现不同的顺序执行.
例:
System.out.println("forEach Demo");
Stream.of("AAA","BBB","CCC").forEach(s->System.out.println("Output:"+s));
System.out.println("forEachOrdered Demo");
Stream.of("AAA","BBB","CCC").forEachOrdered(s->System.out.println("Output:"+s));
Run Code Online (Sandbox Code Playgroud)
输出:
forEach Demo
Output:AAA
Output:BBB
Output:CCC
forEachOrdered Demo
Output:AAA
Output:BBB
Output:CCC
Run Code Online (Sandbox Code Playgroud)
请提供两种方法产生不同输出的示例.
我正在制作一个跨平台的应用程序,它根据在线检索的数据重命名文件.我想清理我从当前平台的Web API中获取的字符串.
我知道不同的平台有不同的文件名要求,所以我想知道是否有跨平台的方式来做到这一点?
编辑:在Windows平台上,您不能有问号'?' 在文件名中,而在Linux中,您可以.文件名可能包含这些字符,我希望支持这些字符的平台保留它们,否则,将它们删除.
此外,我更喜欢不需要第三方库的标准Java解决方案.
我需要Iterator<Character>一个String物体.Java中是否有任何可用的功能可以为我提供这个功能,还是我必须编写自己的代码?
我有一串由数字序列组成的字符串(例如"1234").如何在不使用Java的库函数String的int情况下返回Integer.parseInt?
public class StringToInteger {
public static void main(String [] args){
int i = myStringToInteger("123");
System.out.println("String decoded to number " + i);
}
public int myStringToInteger(String str){
/* ... */
}
}
Run Code Online (Sandbox Code Playgroud) java ×9
string ×7
char ×2
foreach ×2
unicode ×2
character ×1
filenames ×1
filesystems ×1
integer ×1
iteration ×1
iterator ×1
java-8 ×1
java-stream ×1
loops ×1
performance ×1
stream ×1
terminology ×1