0

首先,我不是一个经验丰富的java开发者。问题是我的 sql 查询给出这样的返回数据ABC BCD DEF EFG。但是,我想,在每个条目之后添加所以,我试过这个

if (cursor != null) {
            cursor.moveToFirst();
            do {

                if (cursor.getPosition() == 0) {

                    getName = cursor.getString(cursor.getColumnIndexOrThrow("NAME"));

                } else {

                    getName = getName + ","
                            + cursor.getString(cursor.getColumnIndexOrThrow("NAME"));
                }

            } while (cursor.moveToNext());
        }

我的问题是可以吗,或者有什么方法可以有效地编写此代码(就像通过编写更少的代码行来实现相同的目标一样)。谢谢你。

4

7 回答 7

1

这个怎么样:

myString = "ABC BCD DEF EFG";
String newString = myString.replace(" ", ", ");
System.out.println(newString);

输出:

ABC, BCD, DEF, EFG
于 2013-08-28T16:17:53.123 回答
0

使用 MySql 查询本身包含逗号怎么样?您可以在此链接中找到有关它的更多信息。

于 2013-08-28T16:19:50.050 回答
0

我想指出您代码中的一个问题(与字符串格式无关)。当光标指向第一条记录时,您应该始终检查是否为空。

if (cursor.moveToFirst() != null)
{
    ...
}
于 2013-08-28T16:47:48.233 回答
0

你可以用更少的代码做到这一点,但它可能不会更有效:

if (cursor != null) {
    cursor.moveToFirst();
    while(cursor.moveToNext()) {
        getName += ((!"".equals(getName))?",":"") + cursor.getString(cursor.getColumnIndexOrThrow("NAME"));
    } 
}

根据您的要求,您可以在实际查询中使用 concat。

于 2013-08-28T16:23:48.453 回答
0

StringBuilder如果您使用而不是String在构建结果时,您的代码会更有效率。

StringBuilder str = new StringBuilder();
loop...
    if (first) {
        str.append(cursor.getString(...));
    } else {
        str.append(',');
        str.append(cursor.getString(...));
    }
String theString = str.toString();

每次+与字符串一起使用时,您都会在幕后创建需要进行垃圾回收的临时对象。通过显式使用,StringBuilder您可以完全避免在循环的每次迭代中构建字符串的额外对象。

于 2013-08-28T16:23:52.987 回答
0

怎么样-

String str = "ABC BCD DEF EFG";
str = str.replaceFirst(" ", ", ");
System.out.println(str);

输出:

ABC, BCD DEF EFG

于 2013-08-28T16:22:48.667 回答
0

以下代码会更短,并且应该实现与您发布的完全相同的内容。

if (cursor != null) {
    cursor.moveToFirst();
    getName = cursor.getString(cursor.getColumnIndexOrThrow("NAME"));
    while (cursor.moveToNext()) {
        getName = getName + "," + cursor.getString(cursor.getColumnIndexOrThrow("NAME"));
    }
}
于 2013-08-28T16:20:52.980 回答