URI の queryParameter をデコードして実行する必要があるユースケースがあります (この質問の範囲外)。
URI があり、それをデコードする必要があるとします。現在、すべての%20がスペースに変換され、URI の作成中にスペースを% 20で表す必要があることがわかりましたが、 %をスペースとして使用して URI を取得する場合がある可能性があります。したがって、下位互換性を維持するために、 %をスペースに変換したいと考えています。最後に、質問を理解するのに役立つメモがあります。
私は試しreplaceall() %
てみまし%20
たが、再び%20
なり%2020
、他の多くの例外があります。
NPCI の公式ドキュメントによると、これは UPI URI を読み取るために必要です。
注: 現在の PSP アプリは「%」をスペース (「 」) として読み取るように開発されていることを考慮すると、Bank PSP は、エコシステムがリビジョンに合わせられるまで、「%」と「%20」の両方をサポートする必要があります。したがって、下位互換性を確保する必要があります。
EDIT 1 pshemo コメントに基づく -
私が試してみました
str.replaceAll("%(?![0-9a-fA-F])","%20")
上記の正規表現を満たさないケースは、「upi://pay?pa=praksh%40kmbl&pn=Prakash%Abmar&cu=INR」です。
出力は pn -> Prakash" some othercharacter "mar