如何在 Java 中解析前 4 个值的分隔符逗号分隔字符串
Posted
技术标签:
【中文标题】如何在 Java 中解析前 4 个值的分隔符逗号分隔字符串【英文标题】:How To Parse Delimiter Comma Separated String For First 4 Values in Java 【发布时间】:2013-03-13 20:54:44 【问题描述】:我目前正在尝试解析输出为1_3_5_1,1_3_7_1,1_4_9_1
的字符串
我已经运行了一个 for 循环:
String[] row;
for(String value : selValues.split("\\,"))
System.err.println("value to be deleted :: "+value);
for(int i = 0; i <= 4; i++)
row = value.split("\\_");
System.out.println("print row :: " + row[0]);
System.out.println("print row :: " + row[1]);
System.out.println("print row :: " + row[2]);
我正在尝试捕获由“_”分隔的前 4 个。我正在寻找的是 row[] 是:
row[1,3,5,1]
row[1,3,7,1]
row[1,4,9,1]
由于这些是我将在查询中发送到数据库的值。
现在,我的输出只是重复 1,3,5,1。
任何帮助将不胜感激。可能有更好的方法来做到这一点。谢谢!
解决方案
感谢大家的意见。我已经用它们把它清理干净了:
if(selValues != null && !selValues.trim().equals(""))
for(String value : selValues.split(","))
row = value.split("_");
try
//database call here
catch (Exception e)
e.printStackTrace();
【问题讨论】:
使用 String.split(","),不带两个反斜杠。 【参考方案1】:您必须从正则表达式中删除 \\
。
这将满足您的需求:
@Test
public void split2()
String input = "1_3_5_1,1_3_7_1,1_4_9_1";
String[] csv = input.split(",");
for(String v : csv)
String[] usv = v.split("_");
System.out.print("[");
for(int i = 0; i < usv.length; i++)
System.out.print(usv[i]);
if(i < usv.length-1)
System.out.print(", ");
System.out.println("]");
输出是
[1, 3, 5, 1]
[1, 3, 7, 1]
[1, 4, 9, 1]
【讨论】:
@Cthulhu,嗯,是的,但这对他的输入没有用,他在问题中也没有提到。我不应该说you have to remove
,而是you may remove
,因为它在发布的代码中没有用【参考方案2】:
你的内部 for-loop 是不必要的。其控制变量i
未使用。
否则,您的代码会给出正确的输出。
对于较大的逗号分隔列表,最好使用 csv 阅读器,而不是使用字符串。
输出: http://ideone.com/dzaIsh
【讨论】:
以上是关于如何在 Java 中解析前 4 个值的分隔符逗号分隔字符串的主要内容,如果未能解决你的问题,请参考以下文章