我在基于Struts的Web应用程序中有一个链接http://localhost:8080/reporting/pvsUsageAction.do?form_action=inline_audit_view&days=7&projectStatus=scheduled&justificationId=5&justificationName= No Technicians in Area
。
URL justificationName
中的变量在其vales之前有一些空格,如图所示。当我使用justificationName
获得request.getParameter("justificationName")
的值时,它会为我提供URL中给出的带空格的值。我想删除这些空格。我试过trim()
我尝试str = str.replace(" ", "");
但是他们中的任何一个都没有删除那些空格。任何人都可以通过其他方式来消除空间。
注意到我做了一件事,右键单击链接并打开链接到新标签,我注意到链接看起来像。
http://localhost:8080/reporting/pvsUsageAction.do?form_action=inline_audit_view&days=7&projectStatus=scheduled&justificationId=5&justificationName=%A0%A0%A0%A0%A0%A0%A0%A0No%20Technicians%20in%20Area
值得注意的是,在地址栏中,它显示%A0
表示空格,并且还显示%20
空格以及链接并告诉区别,如果有人知道它的话。< / p>
修改 这是我的代码
String justificationCode = "";
if (request.getParameter("justificationName") != null) {
justificationCode = request.getParameter("justificationName");
}
justificationCode = justificationCode.replace(" ", "");
注意:replace函数从字符串内部删除空格但不删除起始空格。 e-g如果我的字符串在使用替换后为“This is string”,则变为“Thisisstring”
提前致谢
答案 0 :(得分:5)
字符串在Java中是不可变的,因此该方法不会更改您传递的字符串,但会返回一个新字符串。您必须使用返回的值:
str = str.replace(" ", "");
答案 1 :(得分:3)
手动修剪
您需要删除字符串的空格。这将删除任意数量的连续空格。
String trimmed = str.replaceAll(" +", "");
如果要替换所有空格字符:
String trimmed = str.replaceAll("\\s+", "");
网址编码
您还可以使用URLEncoder,这听起来更合适:
import java.net.UrlEncoder;
String url = "http://localhost:8080/reporting/" + URLEncoder.encode("pvsUsageAction.do?form_action=inline_audit_view&days=7&projectStatus=scheduled&justificationId=5&justificationName= No Technicians in Area", "ISO-8859-1");
答案 2 :(得分:1)
您必须将replace(String regex, String replacement)
操作的结果分配给另一个变量。有关replace(String regex, String replacement)
方法,请参阅Javadoc。它返回一个全新的String
对象,这是因为Java中的String是不可变的。在您的情况下,您可以简单地执行以下操作
String noSpacesString = str.replace("\\s+", "");
答案 3 :(得分:0)
您可以使用replaceAll("\\s","")
它会删除所有空格。
答案 4 :(得分:0)
答案 5 :(得分:0)
有两种方法可以实现基于正则表达式或您自己的实现逻辑的方式
replaceAll("\\s","")
或
if (text.contains(" ") || text.contains("\t") || text.contains("\r")
|| text.contains("\n"))
{
//code goes here
}