このような文字列/列があります
String a = "000003023_AggregateStopLossLimit_W x3A 973911_2012-12-22.PDF";
その部分を含まない部分文字列を作成したい' x3A 973911'
。
つまり、私はこのようなものが欲しいということです。
000003023_AggregateStopLossLimit_W_2012-12-22.PDF
異なる値を持つ文字列のリストがありますが、形式は同じです。最初のスペースの後に来て次の「_」で終わる文字列の部分を削除したい。
これは私がすでに行ったことです。これは正常に機能していますが、より良い方法があるかどうかを知りたいです。
String b = a.replaceAll(a.substring(a.indexOf(" "), a.indexOf("_",a.indexOf(" "))),"");
Javaではなく、オラクルであるdb自体でこれを行うことができれば、さらに良いでしょう。select を使用して、このフォーマットされた文字列を列から直接取得するアイデアはありますか?
もう 1 つの要件として、ファイルの拡張子を表示したくありません。
したがって、「。」の後には何もありません。これは、このようなことを意味'000003023_AggregateStopLossLimit_W_2012-12-22'
します APCの以前のソリューションを使用して、次のことを試しました
select regexp_replace ( your_string
, '([^[:space]]*) (.*)_(.*)....'
, '\1_\3') as new_string from your_table
これは今のところうまくいっています。
これは最後の 4 文字を削除する必要があり、拡張子が 3 より多いまたは少ない場合、または文字列が切り捨てられていない場合、適切な結果が得られないリスクがあります。
私はそれを行うためのより審美的な方法を探しています。
チャンスはありますか?