2014-04-29 2 views
0

arrylist를 사용하여 txt 파일에 csv (쉼표로 구분 된 값)로 쓰는 float 값을 저장합니다. 나는 소수점 마침표 쉼표를 사용하는 비 북미 사용자들에게 문제가 발생했다. ","마침표 대신 "."정규 표현식 arraylist

,0.007, -0.05, 0.75, 0.72 
, 0.014, -0.04, 0.76, 0.71 

내가 독일을 가질 수 방법 : 여기

,0,003, 0,06, 0,22, 1,01 
, 0,015, 0,06, 0,21, 1,02 

는 CSV 파일로 잘 작동 미국 버전입니다 : 여기

독일 로케일을 사용하여 내 파일 중 하나의 출력 버전이 고정 되었습니까? 각 값을 세미콜론으로 구분하는 쉼표 만 바꾸어야합니다.

답변

1

다음은 이제 작동합니다.

가정 :

  • 모든 숫자는 쉼표를 포함

정규식 :

교체 :

$1.$2 

자바 :

import java.util.regex.*; 

public class JavaRegEx2 { 
public static void main(String[] args) { 
    String line = ", 0,003, 0,06, 0,22, 1,01 , -0,015, 0,06, 0,21, 1,02"; 
    String pattern = "(\\d+),(\\d+)"; 

    String updated = line.replaceAll(pattern, "$1.$2"); 

    System.out.println(updated); 

} 
} 
2

다음 패턴 (example online)은 십진수 쉼표와 일치합니다.

(?<=[\d]),(?=[\d]+(?:,|$|\s)) 

그런 다음 마침표로 바꾸십시오.

자바 코드 예제 :

System.out.println("0,003, 0,06, 0,22, 1,01 , 0,015, 0,06, 0,21, 1,02".replaceAll("(?<=[\\d]),(?=[\\d]+(?:,|$|\\s))", ".")); 
+0

코드에 잘못된 이스케이프 시퀀스가 ​​있습니다. 도와 주셔서 감사합니다. 올바르지 않은 이스케이프 시퀀스 (유효한 것들은 \ b \ t \ n \ f \ r \ "\"\\) – Chrystian

+1

네, 그렇게 빨리 서둘러 몇 가지 실수를 남기 셨으니 죄송하지만 도움이되기를 바랍니다. : –

+0

. 감사. – Chrystian