为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕妹3242003 2022-09-22 20:07:53

我正在尝试从字符串下方打印逗号分隔值


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);

}   

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


编辑:


预期输出


A

B

C

D

E

谢谢


查看完整描述

3 回答

?
慕码人8056858

TA贡献1489条经验 获得超1个赞

下面是代码中令人反感的行:


Idx = IdxUpto;

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


Idx = IdxUpto + 1;

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


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


查看完整回答
反对 回复 6天前
?
汪汪一只猫

TA贡献1547条经验 获得超8个赞

您可以简单地使用如下方法:String.split()


public class StringSplit {

  public static void main(String[] args) {

    String input = "A,B,C,D,E";

    String[] array = input.split(",");

    for (String letter : array) {

      System.out.println(letter);

    }

  }

}

输出:


A

B

C

D

E


查看完整回答
反对 回复 6天前
?
慕后森

TA贡献1483条经验 获得超5个赞

字符串的 api 表示如下:indexof

返回此字符串中第一次出现的指定子字符串的索引,从指定的索引开始。

当您输入 for 条件时,索引为 1(找到第一个逗号的索引位置)。现在,您要做的是将Idx设置为此索引,如下所示:

Idx = IdxUpto;

现在,由于api的索引开始从该索引中搜索逗号,它一直说我在索引1处找到,并且您继续尝试在索引1处搜索逗号。要解决此问题,请尝试添加如下方法:

Idx = IdxUpto + 1;

需要注意的几件事:

一个。使用驼峰大小写变量命名约定。
(二)您正在追加到字符串生成器,如果您需要按预期的所需输出,则语句应更改为:println

System.out.println(Inp.substring(Idx, IdxUpto));//mutate Idx assignment after this print statement.


查看完整回答
反对 回复 6天前

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信