问题拆分逗号分隔字符串,创建一个新行?

时间:2012-08-16 12:55:28

标签: java

我正在尝试将值和键从选项框中作为逗号分隔的String传递给Java类,然后将Java解析为两个不同的字符串。下面,我演示了一个将值和键组合成一个字符串的Java迭代器:

while(i.hasNext())
{
    Entry<String,String> currentData = i.next();
    String value=currentData.getValue() + "," + currentData.getKey();
    String key=currentData.getKey();
    out.println("<option value=\"");
    out.println(value);
    out.println("\">");
    out.println(key);
    out.println("</option>");
    System.out.println(value + " is the value!");
}

这很有效,因为它以下列格式输出键值对:

valuehere,KeyHere

然后,我使用Java类解析服务器端的String:

String[] tempContainer = request.getParameter("container").split(",");
String containerValue = tempContainer[0];
String containerKey = tempContainer[1];

当我打印containerKey时,它按预期打印:

containerKeyHere

但是,当我打印containerValue时,它会在实际打印值之前打印一个新行。因此,当我尝试将此变量传递给函数时,该函数因新行而失败。我是否错误地使用了split()函数?或者有更好的方法来处理这种解析吗?

谢谢!

5 个答案:

答案 0 :(得分:1)

在分割逗号之前,您可以尝试从字符串中删除所有空格字符:

String[] tempContainer = request.getParameter("container").replace("\\s+"."")
                                                          .split(",");

答案 1 :(得分:1)

您是否尝试过修剪子串? trim函数返回字符串的副本,省略前导和尾随空格。

String containerKey = tempContainer[1].trim();

答案 2 :(得分:1)

问题基本上是你的字符串末尾有一个新行。解决此问题的最简单方法是使用StringUtils.chomp() method

另一种方法是构建自己的chomp方法,将“\ n”,“\ r”和“\ r \ n”替换为“”。

答案 3 :(得分:1)

我因为你的out.println构造而认为它。

尝试使用out.print()而不是out.println()

您正在生成的HTML

<option value=" 
value 
"> 
key 
</option>

这意味着在“价值”之前有一个换行符!这只是containerValue之前的换行符。

另一种可能性,而不是使用out.print将是使用printf

out.printf("<option value=\"%s\">%s</option>", value, key);

恕我直言你的解析似乎是正确的。

答案 4 :(得分:0)

在分割之前你需要修剪这条线,因为它在末尾有新的线条字符

String[] tempContainer = request.getParameter("container").trim().split(",");
String containerValue = tempContainer[0];
String containerKey = tempContainer[1];

http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/String.html#trim()

希望这有帮助!