Java는 불량 데이터에 대한 예외를 발생시키지 않는 int.tryparse를 가지고 있습니까?
중복 가능성:
Java: Integer.parseInt()를 캡슐화하는 좋은 방법
문자열을 플로트로 변환하고 자바에서 try/float 사용을 피하는 방법
C#에는 Int가 있습니다.TryParse:Int32.TryParse 메서드(String, Int32%)
이 방법의 장점은 불량 데이터에 대해 예외를 두지 않는다는 것입니다.
자바에서는Integer.parseInt("abc")
예외가 발생하며, 이러한 상황이 발생할 수 있는 경우 퍼포먼스가 크게 저하됩니다.
퍼포먼스가 문제가 되는 경우, 이 문제를 해결할 수 있는 방법이 있을까요?
다른 방법은 regex에 대해 입력을 실행하는 것뿐입니다만, 어떤 것이 더 빠른지 테스트해야 합니다.
아니, 이렇게 직접 만들어야 돼
public int tryParseInt(String value, int defaultVal) {
try {
return Integer.parseInt(value);
} catch (NumberFormatException e) {
return defaultVal;
}
}
...또는
public Integer parseIntOrNull(String value) {
try {
return Integer.parseInt(value);
} catch (NumberFormatException e) {
return null;
}
}
Apache Commons에는 사용자가 원하는 작업을 수행할 수 있는 IntegerValidator 클래스가 있습니다.Java는 이를 위한 기본 제공 방법을 제공하지 않습니다.
groupid/artifactid에 대해서는 여기를 참조하십시오.
코드 샘플: (기능을 명확하게 나타내기 위해 약간 상세하게 설명)
private boolean valueIsAndInt(String value) {
boolean returnValue = true;
if (null == new org.apache.commons.validator.routines.IntegerValidator().validate(value)) {
returnValue = false;
}
return returnValue;
}
편집 - 입력 데이터의 불량 가능성이 있는 부분과 관련된 성능 문제에 대한 의견을 방금 확인했습니다.파싱에 대한 시도/캐치 방법을 당장은 모르겠습니다.Int는 regex와 비교됩니다.매우 적은 지식으로 보아 정규식은 Java에서 try/catch에 비해 성능이 그다지 높지 않은 것 같습니다.
어쨌든, 난 그냥 이렇게 할 거야.
public Integer tryParse(Object obj) {
Integer retVal;
try {
retVal = Integer.parseInt((String) obj);
} catch (NumberFormatException nfe) {
retVal = 0; // or null if that is your preference
}
return retVal;
}
언급URL : https://stackoverflow.com/questions/8391979/does-java-have-a-int-tryparse-that-doesnt-throw-an-exception-for-bad-data
'source' 카테고리의 다른 글
Brew를 통해 MySQL을 설치한 후 PID 파일을 업데이트하지 않고 서버가 종료되었습니다.라는 오류가 나타납니다. (0) | 2022.10.25 |
---|---|
URL에 대한 최적의 데이터베이스 필드 유형 (0) | 2022.10.25 |
자바에서 패키지 이름을 포함한 현재 클래스 이름을 가져오려면 어떻게 해야 합니까? (0) | 2022.10.25 |
MariaDB 30일 이내에 만료되는 계정의 모든 레코드를 선택합니다. (0) | 2022.10.25 |
목록 뷰 getList하위 게시 항목에서 ItemXmlAttributes 메서드가 실패함 (0) | 2022.10.25 |