반응형
SDK에서 ASCII가 아닌 문자
나는 문자열을 가지고 A função
, Ãugent
내가 좋아하는 캐릭터를 교체 해야하는 ç
, ã
, Ã
빈 문자열을.
ASCII가 아닌 문자 만 일치하는 것입니까?
나는 기능을 사용하고있다
public static String matchAndReplaceNonEnglishChar(String tmpsrcdta)
{
String newsrcdta = null;
char array[] = Arrays.stringToCharArray(tmpsrcdta);
if (array == null)
return newsrcdta;
for (int i = 0; i < array.length; i++)
{
int nVal = (int)array[i];
boolean bISO = Character.isISOControl(array[i]); // Is character ISO control
boolean bIgnorable = Character.isIdentifierIgnorable(array[i]); // Is Ignorable identifier
// Remove tab and other unwanted characters..
if (nVal == 9 || bISO || bIgnorable)
array[i] = ' ';
else if (nVal > 255)
array[i] = ' ';
}
newsrcdta = Arrays.charArrayToString(array);
return newsrcdta;
}
하지만 제대로 작동하지 않습니다. 필요한 개선 사항 ... 여기에 한 가지 더 문제가 있습니다. 마지막 업그레이드가 대체에 추가 공간을 만드는 공백 문자로 대체 될 것입니다.
ASCII가 아닌 모든 문자를 검색하고 바꿉니다.
String resultString = subjectString.replaceAll("[^\\x00-\\x7F]", "");
FailedDev의 대답은 좋지만 개선 할 수 있습니다. ascii 등가물을 유지하려면 먼저 정규화해야합니다.
String subjectString = "öäü";
subjectString = Normalizer.normalize(subjectString, Normalizer.Form.NFD);
String resultString = subjectString.replaceAll("[^\\x00-\\x7F]", "");
=> will produce "oau"
이렇게하면 "öäü"와 같은 문자는 최소한 일부 정보를 보존하는 "oau"에 매핑됩니다. 정규화하지 않습니다.
이것이 유니 코드 솔루션이 될 것입니다.
String s = "A função, Ãugent";
String r = s.replaceAll("\\P{InBasic_Latin}", "");
\p{InBasic_Latin}
유니 코드 범위 U + 0000..U + 007F 모든 문자가 포함 된 유니 블록 (된다 참조 regular-expression.info )
\P{InBasic_Latin}
부정하다 \p{InBasic_Latin}
이런 식으로 시도해 볼 수 있습니다. 알파벳의 특수 문자 범위는 192부터 시작하는 결과에서 문자를 피할 수 있습니다.
String name = "A função";
StringBuilder result = new StringBuilder();
for(char val : name.toCharArray()) {
if(val < 192) result.append(val);
}
System.out.println("Result "+result.toString());
또는 아래 함수를 사용하여 ASCII 문자를 제거 할 수 있습니다. 내부 작업을 알게 될 것입니다.
private static String removeNonASCIIChar(String str) {
StringBuffer buff = new StringBuffer();
char chars[] = str.toCharArray();
for (int i = 0; i < chars.length; i++) {
if (0 < chars[i] && chars[i] < 127) {
buff.append(chars[i]);
}
}
return buff.toString();
}
참고 URL : https://stackoverflow.com/questions/8519669/replace-non-ascii-character-from-string
반응형
'ProgramingTip' 카테고리의 다른 글
주어진 파일을 포함하는 파일 시스템의 크기와 여유 공간 찾기 (0) | 2020.11.09 |
---|---|
설치 후 awscli가 경로에 추가되지 않음 경고 (0) | 2020.11.09 |
$ 대 jQuery (0) | 2020.11.08 |
.NET에서 참조는 얼마나 섭섭니까? (0) | 2020.11.08 |
Spring 트랜잭션에서 requires_new와 중첩 된 전파의 차이점 (0) | 2020.11.08 |