문자열 목록이 있는데 패턴이 일치하면 문자열을 부동으로 변환하고 싶습니다. 여기 형식이 지정된 문자열을 부동으로 변환하는 방법은 무엇입니까?
는 어떤 가치와 예상되는 결과이다 : 그 내가 옆에Pattern pattern = Pattern.compile("#.###,###");
for(String s : list){
Matcher m = pattern.matcher(s);
if(m.matches()){
//convert
}
}
'나는 번호가 유효한지 확인하기 위해이 코드를하려고했으나 패턴이 일치되지 않습니다
1000 -> 1000.0
1.000 -> 1000.0
1.000,000 -> 1000.0
-1.000,000 -> -1000.0
9,132 -> 9.132
1,000.00 -> invalid
30.10.2010 -> invalid
1,000.000,00 -> invalid
이 코드를 사용해 보았습니다 :
DecimalFormat df = (DecimalFormat) NumberFormat.getCurrencyInstance();
for(String s : list){
try {
Number num = df.parse(s);
//..
} catch (ParseException e) {
}
}
이 코드의 문제점은 패턴 기반 v 알리아스가 수행됩니다. 예 : 2012/05/30
과 같은 날짜는 2012
으로 변환됩니다.
그렇다면 올바른 패턴을 정의하거나 내 요구에 DecimalFormat
을 어떻게 구성 할 수 있습니까?
엄밀히 말하면, 언급 한 숫자가 유효하지 않아야하지만 그런 숫자가 나타날 것으로 기대하지는 않습니다. 그래서 현재 내 목록을 필터링하는 데는 잘 작동합니다. 귀하의 정규식을 사용하여 문자열을'DecimalFormat'을 사용하여 변환 할 수 없습니다. 왜냐하면 정규식을 변경하면 형식이 더 이상 올바르지 않을 수 있기 때문입니다. 그래서 거기에 정규식을 기반으로 문자열을 변환하는 방법은 무엇입니까? – Pedro
@Pedro'DecimalFormat'을 사용한 적은 한번도 없기 때문에 도움이되지 않습니다. 죄송합니다. 이제 내가 할 수있는 일은 필요할 경우 정규식을 더 커스터마이징하는 것입니다. – Pshemo