2016-08-04 5 views
-2

ich die anderen Zeichen in der Zeichenfolge ersetzenErsetzen Sie die „^“ in der Zeichenfolge in Java

String slash_data=cap_data.replaceAll("/", "%2F"); 

Verwendung Aber während der Ersetzung von „^“ Es ist in dieser Position nicht ersetzt.

String string_data="058000657^HELLO HI /" 
String cap_data=string_data.replaceAll("^", "%5E"); 

Was ist daran falsch?

+1

Flucht es, 'replaceAll' nimmt einen regulären Ausdruck ... – Tunaki

+3

' String capData = stringData.replace ("^", "% 5E"); '... – Reimeus

+0

@ Reimeus habe ich, ich bin ein Idiot: D tut mir leid – f1sh

Antwort

4

Das Problem ist, dass die replaceAll-Methode einen regulären Ausdruck anstelle einer Literalzeichenfolge verwendet, und ^ ist ein reguläres Ausdruckssymbol, das "Anfang der aktuellen Zeile" bedeutet. Es sucht also nicht wirklich nach einem ^ Charakter.

Sie müssen die ^ Zeichen zu entkommen: versuchen \\^ stattdessen.

(Dies ist auch etwas verwirrend. Ein einzelner umgekehrter Schrägstrich in einer Zeichenfolge fungiert als Escape-Zeichen, also müssen Sie Ihre Zeichenfolge aus einem einzelnen Backslash gefolgt von einem ^ bestehen. Aber wie Sie einen einzelnen Backslash in Ihrer Quelle schreiben Code ist wie \\, weil Sie den Backslash umgehen müssen ...)

+0

Danke für deine Erklärung .. jetzt habe ich es. –

+0

Aber es funktioniert nicht .. Reimeus Antwort funktioniert .. –

3

^ist ein Sonderzeichen in Regex. Es bedeutet den Anfang einer Zeichenfolge. So haben Sie es zu entkommen:

String cap_data=string_data.replaceAll("\\^", "%5E"); 
Verwandte Themen