文字列の数字部分から先行ゼロをすべて削除しようとしています。私はこのコードを思いついた(下記)。与えられた例からそれは働いた。しかし、最初に「0」を追加すると、適切な出力が得られません。誰もがこれを実現する方法を知っていますか?事前のおかげで文字列の数字部分から先行ゼロをすべて削除します。
入力:(2016)abc00701def00019z - >出力:(2016)abc701def19z - > resut:正しい
入力:0(2016)abc00701def00019z - >出力:(2016)abc71def19z - >結果:間違っ - >期待される出力:(2016)abc701def19z
EDIT:文字列は英語のアルファベット以外を含むことができます。
String localReference = "(2016)abc00701def00019z";
String localReference1 = localReference.replaceAll("[^0-9]+", " ");
List<String> lists = Arrays.asList(localReference1.trim().split(" "));
System.out.println(lists.toString());
String[] replacedString = new String[5];
String[] searchedString = new String[5];
int counter = 0;
for (String list : lists) {
String s = CharMatcher.is('0').trimLeadingFrom(list);
replacedString[counter] = s;
searchedString[counter++] = list;
System.out.println(String.format("Search: %s, replace: %s", list,s));
}
System.out.println(StringUtils.replaceEach(localReference, searchedString, replacedString));
私はそこに正規表現がありますが、すべての数字を取り出してintに変換することもできます。これにより、先行するすべてのゼロが削除されます。以前の値を新しいものに置き換えるだけで済みます – XtremeBaumer
@XtremeBaumerこれは、intが保持するには大きすぎる非常に大きいシーケンスの場合には失敗します。 – Sentry
@Sentryはわかりませんが、BigIntegerは先頭のゼロも削除します。 bigIntegerをオーバーロードする番号を含む文字列を持つことは疑いありません – XtremeBaumer