2011-01-31 7 views
0

출력으로 임의의 문자열을 생성해야합니다. 시스템에 이미 설치된 언어 이름/로캘 이름을 입력 할 수 있습니다.주어진 언어/로케일의 임의의 문자열을 생성하는 방법

모든 제안 사항에 감사드립니다. 감사합니다. .

방법 서명 등이 될 수있는 코멘트에서 발췌 : ="adsaswzxcvnaj" (임의)가 될 수

public String getRandomStringOfLocale(Locale locale); 

를 출력 input=Locale.ENGLISH에 대한 현명한 원하는 로케일.

+2

그래서 문자열이 실제로 랜덤하지 않아야합니까? 로케일에 정확히 얼마나 의존해야합니까? 예제를 줄 수 있습니까? –

+0

메소드 서명은 다음과 같을 수 있습니다. public String getRandomStringOfLocale (Locale locale); input = Locale.ENGLISH 출력은 "adsaswzxcvnaj"(임의 값) 일 수 있습니다. 모든 로케일을 현명하게 나타냅니다. – SmartSolution

+0

@SmartSolution - 여전히 이해가 가지 않습니다. 그것은 오히려 암호화/해독 또는 해싱 문제처럼 보입니다. 제발 질문 *을 편집하고 이유를 추가하십시오 ** ** 당신이 무작위로 만들고 싶은 ** ** ** ** ** ** 스마트 솔루션 *을 찾는데 도움이 될 것입니다.)) –

답변

1

나는 당신이 한 특정 유니 코드 코드 블록에서 임의의 문자를 원한다고 생각한다. 그게 맞습니까? 나는 안드로이드가 API에 공개 된 코드 블록의 정의를 가지고 있다고 생각하지 않는다. (Character.UnicodeBlock 메서드가 작동하려면 몇 가지 정의가 있어야합니다. 액세스 할 수 없다고 생각합니다.)

유니 코드 문자 범위 테이블을 직접 생성 한 다음 로캘이 지정된 경우 일치하는 방법을 알아낼 수 있습니다 . 그러나 많은 로케일이 동일한 유니 코드 블록에 매핑됩니다. 예를 들어 대부분의 Latin-1 언어 (영어, 스페인어, 프랑스어, 독일어 등)는 BASIC_LATIN 블록에 매핑됩니다.

스페인 로캘의 경우 ñ를 포함 할 수 있지만 영어 로캘의 경우는 포함 할 수없는 임의의 문자열을 원한다면 훨씬 어려워집니다.

4

이상하게 들릴지 모르지만 문제를 해결할 수 있습니다.

무작위 문자열이 필요한 언어 및 문자 집합에서 Wikipedia의 임의의 기사를 가져옵니다. 영숫자가 아닌 문자와 HTML 태그를 모두 제거하십시오. 무작위 정수 생성자를 인스턴스화하고이를 사용하여 텍스트를 나타내는 문자열에서 문자를 선택하십시오.

String text = WikipediaGrabber.grab(Locale.FRENCH); 
text = removeNonAlphaNumericCharacters(text); 
Random r = new Random(); 
StringBuilder word = new StringBuilder(); 
for (int i = 0; i < NUMBER_OF_CHARACTERS_PER_RANDOM_STRING; i++) 
{ 
    int index = r.nextInt() * text.length(); 
    word.append(text.substring(index, index+1); 
} 
System.out.println("random string in French: " + word.toString()); 
+0

+1, 우리는 응용 프로그램의 IO 동작을 테스트하기 위해 러시아어, 프랑스어 및 AXIS-OF-EVIL (TM) 언어 텍스트를 얻기 위해 wikipedia를 사용했습니다. – Rudi

관련 문제