문자열에 ASCII만 포함되어 있는지 확인하는 방법
»Character.isLetter(c)
true
글자가 글자인지 아닌지 확인합니다. 빨리 수 있는 요?String
ASCII?
Guava 19.0 이후로는 다음을 사용할 수 있습니다.
boolean isAscii = CharMatcher.ascii().matchesAllOf(someString);
이는 현재 사용되지 않는 방법보다는 공장 방법에 의존하는 방법을 사용합니다.ASCII
싱글톤
여기서 ASCII에는, 이하의 인쇄 불가 문자를 포함한 모든 ASCII 문자가 포함됩니다.0x20
의 (스페이스만 아니라 (스페이스) ,, 인, 인, 인, 인, 인, 인BEL
「」를 해 주세요.0x07
★★★★★★★★★★★★★★★★★」DEL
「」를 해 주세요.0x7F
.
이 코드는 코드 포인트가 이전 버전의 코멘트에 표시되어 있어도 코드 포인트가 아닌 문자를 잘못 사용합니다. 코드 데 이다.U+010000
이상에서는 ASCII 범위를 벗어나는 값을 가진 2개의 대리 문자를 사용합니다.ASCII를 사용하다 심지어 이모티콘이 포함된 문자열도 마찬가지입니다.
''가 ascii()
" " " " " : "
boolean isAscii = CharMatcher.ASCII.matchesAllOf(someString);
java.nio.charset에서 실행할 수 있습니다.Charset.
import java.nio.charset.Charset;
public class StringUtils {
public static boolean isPureAscii(String v) {
return Charset.forName("US-ASCII").newEncoder().canEncode(v);
// or "ISO-8859-1" for ISO Latin 1
// or StandardCharsets.US_ASCII with JDK1.7+
}
public static void main (String args[])
throws Exception {
String test = "Réal";
System.out.println(test + " isPureAscii() : " + StringUtils.isPureAscii(test));
test = "Real";
System.out.println(test + " isPureAscii() : " + StringUtils.isPureAscii(test));
/*
* output :
* Réal isPureAscii() : false
* Real isPureAscii() : true
*/
}
}
라이브러리에 의존하지 않고 정규식을 사용하는 또 다른 방법이 있습니다.
다음 행을 사용할 수 있습니다.
text.matches("\\A\\p{ASCII}*\\z")
전체 예제 프로그램:
public class Main {
public static void main(String[] args) {
char nonAscii = 0x00FF;
String asciiText = "Hello";
String nonAsciiText = "Buy: " + nonAscii;
System.out.println(asciiText.matches("\\A\\p{ASCII}*\\z"));
System.out.println(nonAsciiText.matches("\\A\\p{ASCII}*\\z"));
}
}
regex의
- »
\\A
: 력력개개 \\p{ASCII}
문자: 「ASCII」*
: " " "\\z
: 력력종 :
문자열을 반복하여 모든 문자의 값이 128보다 작은지 확인합니다.
Java String은 개념적으로 UTF-16으로 부호화되어 있습니다.UTF-16에서는 ASCII 문자세트는 값 0~127로 부호화되어 ASCII 이외의 문자(복수의 Java 문자로 구성될 수 있음)의 부호화에는 0~127의 숫자가 포함되지 않음을 보증합니다.
또는 IDN 클래스에서 코드를 복사할 수도 있습니다.
// to check if a string only contains US-ASCII code point
//
private static boolean isAllASCII(String input) {
boolean isASCII = true;
for (int i = 0; i < input.length(); i++) {
int c = input.charAt(i);
if (c > 0x7F) {
isASCII = false;
break;
}
}
return isASCII;
}
Apache의 commons-lang3에는 이 문제를 포함한 모든 종류의 '문제'에 대한 유용한 유틸리티/편의 방법이 포함되어 있습니다.
System.out.println(StringUtils.isAsciiPrintable("!@£$%^&!@£$%^"));
이것을 시험해 보세요.
for (char c: string.toCharArray()){
if (((int)c)>127){
return false;
}
}
return true;
문자열에 ASCII 문자만 포함되어 있으면 true가 반환되고 포함되지 않으면 false가 반환됩니다.
Charset.forName("US-ASCII").newEncoder().canEncode(str)
비 ASCII 를 삭제하는 경우는, 다음의 스니펫을 참조해 주세요.
if(!Charset.forName("US-ASCII").newEncoder().canEncode(str)) {
str = str.replaceAll("[^\\p{ASCII}]", "");
}
Java 8 이상에서는 와 함께 를 사용할 수 있습니다.
boolean allASCII = str.codePoints().allMatch(c -> c < 128);
Kotlin의 경우:
fun String.isAsciiString() : Boolean =
this.toCharArray().none { it < ' ' || it > '~' }
문자열을 반복하고 charAt()를 사용하여 char를 가져옵니다.그런 다음 int로 처리하여 원하는 Unicode 값(ASCII의 슈퍼셋)이 있는지 확인합니다.
마음에 들지 않는 것부터 시작하라.
private static boolean isASCII(String s)
{
for (int i = 0; i < s.length(); i++)
if (s.charAt(i) > 127)
return false;
return true;
}
가능했다.꽤 문제네요.
import java.io.UnsupportedEncodingException;
import java.nio.charset.Charset;
import java.nio.charset.CharsetEncoder;
public class EncodingTest {
static CharsetEncoder asciiEncoder = Charset.forName("US-ASCII")
.newEncoder();
public static void main(String[] args) {
String testStr = "¤EÀsÆW°ê»Ú®i¶T¤¤¤ß3¼Ó®i¶TÆU2~~KITEC 3/F Rotunda 2";
String[] strArr = testStr.split("~~", 2);
int count = 0;
boolean encodeFlag = false;
do {
encodeFlag = asciiEncoderTest(strArr[count]);
System.out.println(encodeFlag);
count++;
} while (count < strArr.length);
}
public static boolean asciiEncoderTest(String test) {
boolean encodeFlag = false;
try {
encodeFlag = asciiEncoder.canEncode(new String(test
.getBytes("ISO8859_1"), "BIG5"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return encodeFlag;
}
}
//return is uppercase or lowercase
public boolean isASCIILetter(char c) {
return (c > 64 && c < 91) || (c > 96 && c < 123);
}
언급URL : https://stackoverflow.com/questions/3585053/how-to-check-if-a-string-contains-only-ascii
'programing' 카테고리의 다른 글
파일 리스트가 있는 각각에 대해 사용할 수 없음 (0) | 2022.09.16 |
---|---|
Python에서 파일이나 폴더를 삭제하려면 어떻게 해야 하나요? (0) | 2022.09.16 |
Javascript DataTransfer 항목이 비동기 호출을 통해 유지되지 않음 (0) | 2022.09.03 |
'동시 수정'을 회피하는 방법'ArrayList'를 반복하는 동안 요소를 제거하는 동안 예외"를 선택하십시오. (0) | 2022.09.03 |
JMS 및 AMQP - 토끼MQ (0) | 2022.09.03 |