我相信你们中的大多数人会认为这是您多次听到(并回答)关于 Java 中的字符串连接的同一个问题。但相信我,它是不同的。事实上,如此不同,以至于我什至犹豫将其发布在这里。但无论如何,它就在这里。我有一些代码如下:
public void handleSuccess(String result)
{
result = result.trim();
MessageBox.alert("Information","Result after trimming: '" + result + "'");
result = result.substring(result.indexOf('\n') + 1);
MessageBox.alert("Information","Result after substring: '" + result + "'");
String returns = getReturns();
MessageBox.alert("Information","Returns: '" + returns + "'");
String action = getAction();
MessageBox.alert("Information","Action: '" + action + "'");
String finalResult = result + returns + action;
MessageBox.alert("Information","Final result: '" + finalResult + "'");
}
现在的情况是,所有这些:getReturns(), result 和getAction()返回非空白值,实际上字符串finalResult包含执行最后一行后的连接值。因此,在第 1 行,“结果”包含“12/03/2013|04-AERTY|” . 结果的值在第 1,2 行的末尾保持不变。getReturns()返回值12.4724。所以在第 3 行末尾,finalResult包含"12/03/2013|04-AERTY|12.4724"。getAction()返回"expt"。因此,在第 5 行末尾,finalResult包含“12/03/2013|04-AERTY|12.4724|expt”
这是,当我在 Eclipse 中调试或运行应用程序时。一旦在 UNIX 系统上构建相同的应用程序以生成“战争”文件,并将战争部署在 tomcat 服务器上,问题就出现了。当我在部署的战争上运行应用程序时,最后一行不包含连接值。所以在第 5 行的末尾,finalResult只包含"12/03/2013|04-AERTY|12.4724"。我希望它包含“12/03/2013|04-AERTY|12.4724|expt”,就像在 Eclipse 中运行时一样。
我也尝试过stringbuffer、stringbuilder和"+"运算符,但似乎没有任何效果。我什至没有例外。有人可以帮我解决这个问题,或者至少让我明白我在这里可能做错了什么吗?
再次强调一下,eclipse(在windows机器上)和UNIX机器上的代码完全相同。我对它们做了一个差异。
这是我在放置消息框后得到的:
- 消息框 1:“修剪后的结果:'12/03/2013|04-AERTY|'”
- 消息框 2:“子字符串后的结果:'12/03/2013|04-AERTY|'”
- 消息框 3:“返回:'12.4724'”
- 消息框 4:“操作:'|expt'”
- 消息框 5:“最终结果:'12/03/2013|04-AERTY|12.4724|expt'”
消息框 5 的输出是我使用 eclipse 执行代码时收到的输出在部署的战争上运行时,消息框 1-4 的输出与上面相同,但消息框 5 显示:“最终结果:'12/03 /2013|04-AERTY|12.4724"