私はいくつかの異なる文字を異なる値に置き換えようとしています。たとえば、私が持っている場合:#love hate
それから私はしたいと思います%23love%20hate
URL文字列を正規表現でエンコードする
グループとは何か?私はグループを使って理解しようとしましたが、本当に理解できませんでした。
私はいくつかの異なる文字を異なる値に置き換えようとしています。たとえば、私が持っている場合:#love hate
それから私はしたいと思います%23love%20hate
URL文字列を正規表現でエンコードする
グループとは何か?私はグループを使って理解しようとしましたが、本当に理解できませんでした。
あなたはこれをしようとすることができます:
String encodedstring = URLEncoder.encode("#love hate","UTF-8");
それはあなたが望む結果が得られます。それをREVERSするには、この操作を行う必要があります。
String loveHate = URLDecoder.decode(encodedstring);
単一文字を置き換えるためにRegExは必要ありません。 RegExはそのようなポーズのための過剰なものです。置き換えたい文字ごとに、単純にStringクラスのプレーン置換メソッドをループ内で使用することができます。
String output = input.replace("#", "%23");
output = output.replace(" ", "%20");
置き換えたい文字数はいくつですか?
返信ありがとうございます。私は次のようにいくつかの文字をrepalceする必要があります。 %23i%20love%20youにする必要があります。そしてあなたに病気をありがとうございました – BeginnerPro
Np。しかし、そのようなステートメントを数十回も持つことは、単一のRegExコンパイルを使用するよりはるかに効率的です。 – adarshr
いいえ、複数の置換が必要です。もう1つの選択肢は、groupを使用して、いくつかの文字列の1つの次の文字列を検索し、その文字列が何であるかを検査し、おそらくマップを使用して適切に置き換えます。
私は何を達成したいことはURLエンコードの代わりに、純粋な交換のようなものだと思います。
このスレッドは、特にあなたのためにもっと興味深いかもしれない7票を持つこのスレッドに関するいくつかの回答を参照してください。
あなたはUTF-8にURLをエンコードしようとしているか、または既存のクラスを使用して、いくつかのエンコーディングは、例えば
はるかに容易になります。マットが言ったようにコモンズ-HTTPClientのプロジェクトが
URIUtil.encodeWithinQuery(input,"UTF-8");
、この問題を解決するための最良の方法は、のURLEncoderです。あなたが正規表現を使う、という場合は、その後、java.util.regex.Matcher.appendReplacement
のドキュメントのサンプルコードを参照してください。
Pattern p = Pattern.compile("cat");
Matcher m = p.matcher("one cat two cats in the yard");
StringBuffer sb = new StringBuffer();
while (m.find()) {
m.appendReplacement(sb, "dog");
}
m.appendTail(sb);
System.out.println(sb.toString());
をループ内では、マッチした部分文字列を参照して、それに基づいてカスタム置換を行うためにm.group()
を使用することができます。このテクニックは、$ {variables}を地図などで見て置き換えることによって使用できます。
どのように私はそれを逃しました! :) – adarshr
まさに私が必要としてくれたことありがとう=)あなたは多くの子供がいて、繁栄しているかもしれない – BeginnerPro