数年前に自分で書いた古いコードに出くわしました。しかし、今のところ、なぜそれが機能するのかわかりません。コードの変更に進む前に、なぜそれが機能するのかを理解する必要があります。
CSV形式のデータがあります
"abc",123456789,"def"
時々、サーバーが私を返します
"abc",123,456,789,"def"
そこで、解決するために次のコードを書きました。
public class Sandbox {
private static final Pattern digitPattern = Pattern.compile("(\",)|,(?=[\\d,]+,\")");
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// "abc",123,456,789,"def"
String data = "\"abc\",123,456,789,\"def\"";
final String result = digitPattern.matcher(data).replaceAll("$1");
// "abc",123456789,"def"
System.out.println(result);
}
}
ただし、コードを振り返ってみると、その理由がわから|,
ず[\\d,]+
、コンマを削除するのに役立ちます。入力のどの部分が|,
一致していますか?
解析作業がどのように行われるかについての段階的な説明は非常に高く評価されています