-4

我在基于 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其值之前有一些空格,如图所示。当我获得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为空格,如果有人知道,请查看链接并说出区别。

编辑 这是我的代码

String justificationCode = "";
        if (request.getParameter("justificationName") != null) {            
            justificationCode = request.getParameter("justificationName");
        }
        justificationCode = justificationCode.replace(" ", "");

注意:替换函数从字符串内部删除空格,但不删除起始空格。例如,如果我的字符串是“This is string”,在使用 replace 之后它变成“Thisisstring”

提前致谢

4

6 回答 6

5

字符串在 Java 中是不可变的,因此该方法不会更改您传递的字符串,而是返回一个新字符串。您必须使用返回值:

str = str.replace(" ", "");
于 2013-05-21T13:18:37.320 回答
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");
于 2013-05-21T13:19:43.980 回答
1

您必须将replace(String regex, String replacement)操作的结果分配给另一个变量。有关该方法,请参阅Javadocreplace(String regex, String replacement)。它返回一个全新的String对象,这是因为 Java 中的 String(s) 是不可变的。在您的情况下,您可以简单地执行以下操作

String noSpacesString = str.replace("\\s+", "");
于 2013-05-21T13:19:45.197 回答
0

您可以使用replaceAll("\\s","")它将删除所有空白。

于 2013-05-21T13:21:27.740 回答
0

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

s = s.trim();

或者,如果您想删除所有空格,请使用:

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

于 2013-05-21T13:23:12.580 回答
0

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

replaceAll("\\s","")

或者

    if (text.contains(" ") || text.contains("\t") || text.contains("\r") 
       || text.contains("\n"))   
    {  
   //code goes here
    }
于 2013-05-21T13:27:23.397 回答