我使用包含表内容的参数生成了一个get URL。但是,我注意到URL中有许多不希望发送的字符。
这些我已经确定为回车,新行和水平制表符。在发送表单提交数据之前,我如何从文本中删除它们?
生成的URL
Stock/BuyServlet?tradeDetail=%0D%0A++++++%09TFSCU%0D%0A++++++%091347+Capital+Corp.%0D%0A++++++%0910.27%0D%0A++++++%09%2442.93M%0D%0A++++++&qty=10
我真正想要的是:
Stock/BuyServlet?tradeDetail=TFSCU%2C1347+Capital+Corp.%2C10.27%2C%2442.93M&qty=10
传递的数据是:
tradeDetail=TFSCU 1347 Capital Corp. 10.27 $42.93M
qty=10
数据由Java httpservlet处理。
我无法在javascript代码中删除表单提交前的特殊字符。然而,当我在servlet中收到详细信息时,我执行了以下字符串操作来解决我的问题。
我已经发布了整个代码块,使它更有意义-
Enumeration<String> em = request.getParameterNames();
HashMap<String, String> map = new HashMap<String,String>();
if(em == null)
{
System.out.println("all is lost");
}
while (em.hasMoreElements()) {
String params = (String) em.nextElement();
if(params.equalsIgnoreCase(txn_detail) || params.equalsIgnoreCase("qty"))
{
String value = request.getParameter(params);
if(params.equalsIgnoreCase(txn_detail))
{
/* This fixed it */
params = params.replaceAll("[\r\n\t]", " ");
params = params.replaceAll(" ", " ");
/* end of fix */
}
map.put(params, value);
}
}