java - 从字符串中提取逗号分隔的值

标签 java for-loop indexof

我正在尝试打印下面字符串中的逗号分隔值

A,B,C,D,E

这是我的代码

String Inp = "A,B,C,D,E";
StringBuilder op = new StringBuilder();
int Idx = 0;
int IdxUpto = 0;
for(;;){
  IdxUpto = Inp.indexOf(",", Idx);
  if(IdxUpto==-1){
    System.out.println("There is no more commas in String");
    op.append(Inp.substring(Idx, Inp.length()));
    System.out.println(op);
    break;
  }
  op.append(Inp.substring(Idx, IdxUpto));
  Idx = IdxUpto;
  System.out.println(op);
}   

For 循环在第一次提取后没有停止,任何人都可以帮助我做错了什么吗?

编辑:

预期输出

A
B
C
D
E

谢谢

最佳答案

这是代码中的违规行:

Idx = IdxUpto;

您应该递增加一,以考虑到您还必须超过宽度为一的逗号分隔符。所以使用这个:

Idx = IdxUpto + 1;

但请注意,您还有其他几个问题。一方面,您应该遵循 Java 约定并避免以大写字母开头变量名称。此外,在这里使用 while 循环可能比不指定条件的 for 循环更有意义。考虑到所有这些,这是脚本的工作版本:

String input = "A,B,C,D,E";
StringBuilder op = new StringBuilder();
int idx = 0;
int idxUpto = 0;
do {
    idxUpto = input.indexOf(",", idx);
    if (idxUpto == -1) {
        String term = input.substring(idx, input.length());
        op.append(term);
        System.out.println(term);
        System.out.println("There is no more commas in String");
        break;
    }
    String term = input.substring(idx, idxUpto);
    op.append(term);
    idx = idxUpto+1;
    System.out.println(term);
} while(true);

A
B
C
D
E
There is no more commas in String

关于java - 从字符串中提取逗号分隔的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55550670/

相关文章:

java - 如何禁止在编辑文本中输入零后的数字?

java - 更改 Autowired bean 类型会意外更改值吗?

javascript - 循环遍历类,获取类文本值,相加并输出到 div

更改在 C 中循环的回调函数中的全局变量

c# - 句子的英语到 PigLatin 转换

java - Java中允许indexOf多次检查匹配

Java 尝试将意图读取为整数字符串

java - 如何在java中将多级xml扁平化为List<String xpath>?

javascript - 用 30 个符号更新每个 h1 标签(h1 标签下方 3 个段落中的 10 个符号)

vb.net - IndexOf a ComboBox 对我不起作用