그래서 문자열에서 대문자와 소문자와 숫자를 제외한 모든 문자를 제거해야하는이 간단한 방법이 있습니다.String.replaceAll은 어떤 종류의 문자에도 적용되지 않습니다
public static String toSimple(String arg) //redurziert einen String auf Buchstaben und ganze Zahlen
{
String string = arg;
int i = 0;
while (i < string.length())
{
if (((int)string.charAt(i) >= 48 && (int)string.charAt(i) <= 57)||((int)string.charAt(i) >= 65 && (int)string.charAt(i) <= 90)||((int)string.charAt(i) >= 97 && (int)string.charAt(i) <= 121))
i+=1;
else
{
int a = string.length();
string = string.replaceAll(""+string.charAt(i), "");
if (!(string.length() < a)) //Just in case
{
i+=1;
}
}
문제는 도달하고 문자를 제공하지만 경우에 따라 string.replaceAll
아무것도 변경되지 것입니다. 디버거에서 검사하고 명백한 오류나 예외를 찾을 수 없습니다. 전체 ASCII 테이블을 검사하지 않았으므로 문제가 '$'로 발생한다는 것을 알고 있습니까? ' 및 '.' 제안 사항을 해결하는 방법은 무엇입니까?
참고 문자 리터럴 대신 '매직 넘버'로 사용될 수 있음을 - '(int) string.charAt (i)> = 48'은'string.charAt (i)> = '0 ''으로 쓰여질 수 있습니다. ('int' 로의 캐스트는 어떤 경우에도 필요하지 않습니다.) –
String에서 문자를 제거하는 것은 매우 끔찍한 방법입니다. 그리고 그것은 작동하지 않습니다. 문자열 ",, + a"를 사용해보십시오. "+"는 제거되지 않습니다. 일반적으로 StringBuilder에 새 String을 만들지 만, 이렇게하는 경우에도 'String.substring'을 두 번 사용하여 문자 앞뒤의 문자열을 가져옵니다. –