Java에서 텍스트 값을 정수로 파싱하려면 어떻게합니까?자바가 텍스트를 정수로 파싱
나는 2 가지를 시도했다.
Integer.valueOf("22,959");
Integer.parseInt("22,959");
그러나 NumberFormatException이 두 개 모두 표시됩니다.
그냥 추가하면 텍스트가 동적이지만 예를 들어 쉼표 형식으로 표시됩니다.
Java에서 텍스트 값을 정수로 파싱하려면 어떻게합니까?자바가 텍스트를 정수로 파싱
나는 2 가지를 시도했다.
Integer.valueOf("22,959");
Integer.parseInt("22,959");
그러나 NumberFormatException이 두 개 모두 표시됩니다.
그냥 추가하면 텍스트가 동적이지만 예를 들어 쉼표 형식으로 표시됩니다.
두 옵션이 모두 올바른 것입니다. valueOf
은 new Integer()
객체를 반환하고 parseInt
은 프리미티브 int
을 반환합니다.
그러나 문제는 쉼표로 표시되며 메서드 자체에서는 문제가 아닙니다. 그럼 그냥 할
String value = "22,959";
value.replace(",", "");
Integer.valueOf(value);
Integer.parseInt(value);
이 정수에 언급 된 정수는 정수만 허용합니다. 소숫점 이하의 소수점 이하자를 의미합니다. 당신은 부동 소수점 숫자가 아닌 정수를 구문 분석하려는
Integer.parseInt("22,959".replaceAll(",",""));
: 소수 구분을 제거하기 위해 당신은 당신의 문자열 replace
또는 replaceAll
방법을 사용할 수 있습니다. 정수에는 소수점 구분 기호가 없어야합니다. Integer.parseInt ("22")와 유사해야합니다. 사례가 다음과 같아야합니다. float f = Float.parseFloat ("22,959");
아마도 천 단위 구분 기호로 쉼표가 붙은 정수일 것입니다. – NilsH
는 먼저 쉼표를 제거해야합니다
Integer.valueOf("22,959".replaceAll(",", ""));
사용 NumberFormat 클래스
NumberFormat format = NumberFormat.getInstance();
format.parse(num).intValue();
이 기본 인스턴스를 기본 로케일에 따라 될 것입니다. 이 구분에 데이터가있는 경우가
NumberFormat format = NumberFormat.getInstance(Locale.UK);
하여 로케일에 따라 인스턴스를 얻을 수 있습니다, 당신은 로케일 NumberFormat
을 사용할 수
즉 NumberFormat.getNumberInstance(Locale.US).parse("22,959")
정수는 소수점 이하 자릿수를 가질 수 없습니다. 대신 Double을 사용하십시오. 게다가, 당신은을 사용해야합니다. 쉼표 대신 사용할 수 있습니다. 다음 작품 :
이Double.valueOf("22.959");
Double.parseDouble("22.959");
난 당신이
Integer.parseInt("22,959".replaceAll(",", ""));
와 쉼표를 제거하는 것이 좋습니다 이것은 당신은 확실히 지금까지 유럽 로케일과 거래를해야하지 않을 것으로 가정은, 포르투갈어처럼 그들은을 위해 소수를 사용하는 경우 분수에 대한 숫자 분리 및 쉼표.
당신이 다른 로케일에 대처하려는 경우, 당신은 NumberFormat를 사용하여 문자열을 구문 분석해야합니다 :
myString = NumberFormat.getInstance().format(myNumber);
: 팩토리 클래스의 방법 중 하나를 사용
현재 로케일의 수치를 포맷하는 경우를
다른 로케일의 번호를 포맷하려면 getInstance를 호출하여 번호를 지정하십시오.
NumberFormat nf = NumberFormat.getInstance(Locale.FRENCH);
은 그럼 그냥 :
내가 @primitivwurzel에 동의
myNumber = nf.parse(myString);
, 정수는 소수점을 가질 수 없습니다. 사용해 Double.parseDouble()/Double.valueOf() 대신에있는 Integer.parseInt()/Integer.valueOf()
플러스, 점으로 구분 된 소수점 (.)를 사용하지 쉼표 (,)
하나 개의 옵션 쉼표 문자열을 제거하는 것입니다. –