将string []转换为逗号分隔的字符串。

时间:2011-01-12 06:35:39

标签: java parsing long-integer

我有一个字符串数组,我需要将其解析为长变量。

字符串数组包含[[9“,”8“]等值。 我想将其转换为“(9,8)”(我在SQL语句的“IN”子句中使用它。)

实现这一目标的好方法是什么?

这是我的代码:

String[] statusIdArray;
long statsId = Long.parseLong("(");
statsId = Long.parseLong(statusIdArray[0]);
  for(int i=1; i < len; i++) {
    statsId = Long.parseLong(statsId + ",") statsId=Long.parseLong(statsId + statusIdArray[i]);
    statsId = Long.parseLong(statsId + ")");
  }

但是我得到了一个N​​umberFormatException at input string "(9"

4 个答案:

答案 0 :(得分:1)

假设问题是:我有一个字符串数组,我想转换为SQL表示法,所以我可以在SQL查询中使用它们:

import java.util.Arrays; // may need to add this import somewhere among your import statements

/**
 * Convert Java String[] to SQL array with varargs syntax.
 * Example method invocations:<blockquote><pre>
 * String sql1 = toSQLArray("1","2","3"); // should return "(1,2,3)"
 * String sql2 = toSQLArray(new String[] { "0", "5" }); // should return "(0,5)"
 * </pre></blockquote>
 * @param array string array.
 * @return String created by concatenating each array element using "," as separator and 
 * adding "(" and ")" as delimiters for the result. 
 */
public String toSQLArray(String... array) {
  StringBuilder sb= new StringBuilder(Arrays.toString(array));
  sb.replace(0,1, "(");
  int l = sb.length();
  sb.replace(l-1, l, ")");
  return sb.toString();
}

答案 1 :(得分:0)

你们通过“将这个字符串数组解析为(9,8)吗?”

你有一系列字符串吗?或者只是一个字符串?您是否希望将每个数字(以逗号分隔)输入Long数组?或者你想(9,8)成为长“98”?

答案 2 :(得分:0)

// digits is your array
String result = "IN (";
for (int i = 0; i < digits.length; i++) {
    result += digits[i] + (i != digits.lenght - 1) ? ", " : "";
}

result += ")";

我想我现在就明白了。

你必须小心数组的内容,你可能是SQL注入攻击的受害者。

答案 3 :(得分:0)

问题有点不清楚,但也许

long[] result = new long[ strings.length ];
for (int i=0; i<result.length; i++){
    result[i] = Long.parseLong( strings[i] );
}
  

我有一个字符串数组,其中包含digits.say示例(9 8)我必须将此字符串数组作为long变量传递给sql.it的“IN”子句。应该像(9,8)当很久就过去了

在这种情况下,使用Jakarta Commons StringUtils(或使用连接方法的其他内容)

sql.append("IN (");
sql.append(StringUtils.join(strings, ','));
sql.append(")");

我通常也完全反对将变量直接插入到SQL中(你应该使用绑定变量),但是对于可变长度的IN列表来说这有点棘手。只要确保你没有在String数组中得到奇怪的数据。