java - 如何在每个 int 和非 int 值之间添加空格?

标签 java

我想在字符串中的每个数字和非数字之间以及每个非数字之间添加一个空格。

例如: “133+23d-=”➟“133+23d-=”

这是我的尝试:

for(int i=0; i<input.length();i++){
    if((Character.isDigit(input.charAt(i)) && !Character.isDigit(input.charAt(i+1))) || (!Character.isDigit(input.charAt(i)) && Character.isDigit(input.charAt(i+1))) || (!Character.isDigit(input.charAt(i)) && !Character.isDigit(input.charAt(i+1)))){
        input = input.substring(0, i) + " " + input.substring(i, input.length());
    }   
}

(其中“input”是我想要执行此操作的字符串)

目前,由于某种原因,循环只是无限循环?

最佳答案

您正在循环中重新分配input并扩展其长度,同时还使用长度作为终止条件。因此,您还将考虑新添加的空白,这将触发插入另一个空白,等等。

您应该将结果存储在单独的变量中(出于性能原因,最好是 StringBuilder),而不是直接修改输入

此外,由于您的 i0 运行到 length-1,因此在尝试访问 时您将收到 IndexOutOfBoundsException charAt(i+1) 在该循环的最后一次迭代中。

关于java - 如何在每个 int 和非 int 值之间添加空格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40679243/

相关文章:

java - 如何从 firebase 检索特定的数据列表

java - JSON 和 Struts2 结果为 null

Java: float 到十六进制和反转

java - 从 OAuth2.1 迁移到 OAuth2.0

java - 一键清理和构建 Eclipse java 项目

java - 为什么 Java 中 ResultSet 的索引以 '1' 而不是零开头?

java - 使用 Gson 发布 (Android)

java - MySQL 未在 Java REST 应用程序中通过 SSL 连接

Java 内存泄漏

java - 如何获取编译器编译一个类所需的所有源的列表