从字符串值中删除空格

时间:2013-05-21 13:16:24

标签: java

我在基于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”

提前致谢

6 个答案:

答案 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)

如果您要删除尾随和结尾的空格,那么

s = s.trim();

或者如果你想删除所有使用的空格:

s = s.replace(" ","");

答案 5 :(得分:0)

有两种方法可以实现基于正则表达式或您自己的实现逻辑的方式

replaceAll("\\s","")

    if (text.contains(" ") || text.contains("\t") || text.contains("\r") 
       || text.contains("\n"))   
    {  
   //code goes here
    }