-4

http://localhost:8080/reporting/pvsUsageAction.do?form_action=inline_audit_view&days=7&projectStatus=scheduled&justificationId=5&justificationName= No Technicians in AreaStruts ベースの Web アプリケーションにリンクがあります。

URL の変数にはjustificationName、示されているように、値の前にいくつかのスペースがあります。使用の値を取得すると、URL で指定されたスペースをjustificationName 使用してその値が得られます。request.getParameter("justificationName")それらのスペースを削除したい。私は試しtrim()てみstr = str.replace(" ", "");ましたが、それらのいずれもそれらのスペースを削除しませんでした。スペースを削除する他の方法を教えてください。

リンクを右クリックしてリンクを新しいタブに開いたことにもう1つ注意してください。リンクが次のように見えることに気付きました。

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+", "");

URL エンコーディング

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)を別の変数に代入する必要があります。メソッドについては、 Javadocを参照してください。replace(String regex, String replacement)これはまったく新しいStringオブジェクトを返します。これは、Java の文字列が不変であるためです。あなたの場合、次のことを簡単に行うことができます

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

正規表現ベースまたはロジックを実装する独自の方法の 2 つの方法があります。

replaceAll("\\s","")

また

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