相关疑难解决方法(0)

277
推荐指数
4
解决办法
17万
查看次数

如何将for-each循环应用于String中的每个字符?

所以我想迭代字符串中的每个字符.

所以我认为:

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 foreach loops char

176
推荐指数
7
解决办法
38万
查看次数

迭代字符串中所有字符的最快方法

在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().

java string iteration performance char

153
推荐指数
4
解决办法
23万
查看次数

角色,代码点,字形和字形之间有什么区别?

试图理解现代Unicode的微妙之处让我头疼.特别是,代码点,字符,字形和字形之间的区别 - 在最简单的情况下,当使用ASCII字符处理英文文本时,所有这些概念彼此之间都存在一对一的关系 - 这给我带来了麻烦.

看看这些术语如何在像Matthias Bynens的JavaScript这样的文档中使用有一个unicode问题或Wikipedia关于Han统一的文章,我收集到这些概念不是一回事,并且将它们混淆是危险的,但我有点像努力去理解每个术语的含义.

Unicode Consortium提供了一个词汇表来解释这些东西,但它充满了"定义",如下所示:

抽象字符.用于组织,控制或表示文本数据的信息单元....

...

性格....(2)抽象字符的同义词.(3)Unicode字符编码的基本编码单位....

...

雕文.(1)表示一个或多个字形图像的抽象形式.(2)字形图像的同义词.在显示Unicode字符数据时,可以选择一个或多个字形来描绘特定字符.

...

Grapheme.(1)在特定书写系统的背景下最低限度的独特写作单位....

这些定义中的大多数都具有非常学术和正式的声音质量,但缺乏任何意义的质量,或者将定义问题推迟到另一个词汇表条目或标准部分.

因此,我寻求那些比我学得更多的人的神秘智慧.这些概念中的每一个究竟是如何彼此不同的,在什么情况下它们之间不会有一对一的关系?

string unicode terminology

116
推荐指数
2
解决办法
2万
查看次数

如何遍历Java String的unicode代码点?

所以我知道String#codePointAt(int),但它是由char偏移索引,而不是由代码点偏移索引.

我正在考虑尝试这样的事情:

但我担心的是

  • 我不确定自然处于高代理范围内的代码点是否会存储为两个char值或一个值
  • 这似乎是迭代字符的一种非常昂贵的方式
  • 有人必须想出更好的东西.

java string unicode

99
推荐指数
4
解决办法
3万
查看次数

Java 8 Stream中的forEach vs forEachOrdered

我知道这些方法的执行顺序不同,但在我的所有测试中,我都无法实现不同的顺序执行.

例:

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)

请提供两种方法产生不同输出的示例.

java foreach java-8 java-stream

71
推荐指数
3
解决办法
4万
查看次数

是否有一个跨平台的Java方法来删除文件名特殊字符?

我正在制作一个跨平台的应用程序,它根据在线检索的数据重命名文件.我想清理我从当前平台的Web API中获取的字符串.

我知道不同的平台有不同的文件名要求,所以我想知道是否有跨平台的方式来做到这一点?

编辑:在Windows平台上,您不能有问号'?' 在文件名中,而在Linux中,您可以.文件名可能包含这些字符,我希望支持这些字符的平台保留它们,否则,将它们删除.

此外,我更喜欢不需要第三方库的标准Java解决方案.

java filesystems filenames cross-platform

58
推荐指数
6
解决办法
3万
查看次数

Java:如何从String中获取Iterator <Character>

我需要Iterator<Character>一个String物体.Java中是否有任何可用的功能可以为我提供这个功能,还是我必须编写自己的代码?

java string iterator

33
推荐指数
3
解决办法
4万
查看次数

Java - 什么是字符,代码点和代理?他们之间有什么区别?

我试图找到术语"字符","代码点"和"代理"的解释,虽然这些术语不仅限于Java,但如果存在任何特定于语言的差异,我希望解释为它与Java有关.

我发现了一些关于字符和代码点之间差异的信息,字符是为人类用户显示的内容,代码点是编码特定字符的值,但我对代理人一无所知.什么是代理人,他们与角色和代码点有什么不同?我对字符和代码点有正确的定义吗?

另一个关于将字符串作为字符数组逐步执行的线程中,提示此问题的具体注释是"请注意,此技术为您提供字符,而不是代码点,这意味着您可能会获得代理." 我真的不明白,而不是就一个5年前的问题创建一系列评论,我认为最好在新问题中要求澄清.

java character character-encoding

27
推荐指数
5
解决办法
1万
查看次数

在Java中手动将字符串转换为整数

我有一串由数字序列组成的字符串(例如"1234").如何在不使用Java的库函数Stringint情况下返回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 string integer

14
推荐指数
2
解决办法
5万
查看次数