文字列リテラル、つまりソース コードに記述した二重引用符で囲まれたものと、それが表す文字列値を区別する必要があります。前者を後者に変えると、エスケープシーケンスが解釈され、これら2つの違いが生じます。
文字列リテラルからのストリッピング
\11
リテラルの in は、実際の文字列値で 8 進値を持つ文字11
、つまりタブ文字を表します。\11
と同等\t
です。
文字列リテラルのエスケープ バージョンを確実に取得する方法はありません。\11
つまり、ソース コードにまたはが含まれているかどうかを知ることはできません\t
。その情報がクラス ファイルに存在しないためです。したがって、シーケンスからバックスラッシュを「削除」したい場合、正しい置換であったかどう11
かがわかりません。t
このため、バックスラッシュが不要な場合は含めないようにするか、リテラルでもエスケープして適切なバックスラッシュを含めるように、文字列リテラルを修正する必要があります。文字列リテラルのin は、それが表現する文字列に\\
シングルを与えます。\
ランタイム文字列
他の回答へのコメントは、実行時に実際にこの文字列を受け取っていることを示しているため、文字列にはタブ文字ではなく実際のバックスラッシュが含まれていると予想されます。エスケープ シーケンスを解析する高度な入力方法を使用しない限り、生のバックスラッシュがそのまま残ります。コードのテストでその状況をシミュレートするには、文字列に実際のバックスラッシュを含める必要があります。つまり、\\
文字列リテラルに二重のバックスラッシュを含める必要があります。
文字列に実際のバックスラッシュがある場合は、strconst.replace("\\", " ")
やりたいことを行う必要があります。
String strconst="SEPIMOCO EUROPE\\119";
System.out.println(strconst.replace("\\", " ")); // Gives SEPIMOCO EUROPE 119