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

时间:2019-04-06 15:37:12

标签: 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

谢谢

3 个答案:

答案 0 :(得分:1)

这是您的代码中令人反感的行:

Uncaught (in promise) DOMException: Failed to execute 'transaction' on 'IDBDatabase': One of the specified object stores was not found.

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

function onupgradeneeded_version1(e) {
  // Grab a reference to the opened database
  let db = e.target.result;

  // Create an objectStore to store our products in (basically like a single table)
  // including a auto-incrementing key
  let objectStore = db.createObjectStore('products_os', {keyPath: 'id', autoIncrement: true});

  // Define what data items the objectStore will contain
  objectStore.createIndex('title', 'title', {unique: false});
  objectStore.createIndex('price', 'price', {unique: false});
  objectStore.createIndex('inStock', 'inStock', {unique: false});
}

但是请注意,您还有其他一些问题。一方面,您应该遵循Java约定,并避免以大写字母开头变量名。同样,在这里使用Idx = IdxUpto; 循环比未指定条件的Idx = IdxUpto + 1; 循环更有意义。考虑到所有这些,这是脚本的有效版本:

while

答案 1 :(得分:0)

String的indexof API如下所示:

  

从指定索引处开始,返回指定子字符串首次出现时在此字符串中的索引。

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

Idx = IdxUpto;

现在,由于api的索引开始从该索引开始搜索逗号,因此一直说我在索引1处找到了,而您继续尝试在索引1处搜索逗号。要解决此问题,请尝试添加以下内容:

Idx = IdxUpto + 1;

注意事项:

a。使用驼峰大小写变量命名约定。
b。您将追加到StringBuilder,如果需要按预期输出所需的输出,则您的println语句应更改为:

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

答案 2 :(得分:0)

您可以像这样简单地使用<ul class="grid-container"> <li class="header-item-1">header1</li> <li class="header-item-2">header2</li> <li class="header-item-3">header3</li> <li class="sub-header-item-1">1</li> <li class="sub-header-item-2">3</li> <li class="sub-header-item-1">1</li> <li class="sub-header-item-2">3</li> <li class="sub-header-item-1">1</li> <li class="sub-header-item-2">3</li> </ul>方法:

String.split()

输出:

A
B
C
D
E