2011-12-16 8 views
1

저는 종단 간 테스트 중에 다른 json 파일을 생성해야하는 프로젝트에서 작업하고 있습니다.Java에서 임의의 아랍어 문자열을 생성합니다.

요구 사항 중 하나는 시스템이 국제화, 즉 다른 문자 유형을 처리 할 수 ​​있다는 것입니다.

return RandomStringUtils.random(characterAmount, true, false); 
다음 단계는 국제화를 커버하는 것입니다 그러나

, 그리고 난에 필요한 : 나는 간단한 임의의 문자열을 개발하기 위해 관리했습니다

내가 그것을 이제까지 필요로 할 때 다른 라틴 문자를 생성하는 방법 내에서 앉아 아랍어 문자로 임의의 문자열을 생성합니다.

아무에게도이 문제를 가장 잘 수행 할 수있는 방법에 대한 팁이 있습니까?

답변

6

음, 쉬운 방법은 임의의 아랍어 문자를 선택하는 것입니다 (유니 코드 차트에서 위치를 확인한 후 http://unicode.org/charts/PDF/U0600.pdf). 원하는 문자를 선택하십시오.

아쉽게도 불법적 인 아랍어 문자열이 생깁니다. 단어의 시작 부분에 나타나는 문자는 어디에서나 끝 글자에 사용할 수 있으며 아무도 그 떠 다니는 햄자를 가져올 수 없습니다. 문자열이 더 '아랍 규격을 준수'해야하는 경우, 나는 다른 것을 할 것입니다 :

아랍어 텍스트의 큰 파일을 가져 와서 임의의 단어를 선택하십시오. 아무것도 그것을 위해 코란을 친다 : http://www.sacred-texts.com/isl/uq/index.htm

0

당신은 유니 코드 문자

알고리즘의 복잡성이 끔찍 특정 블록에 속하는지 테스트하기 위해 java.lang.Character.UnicodeBlock (link to javadoc) 를 사용할 수있는 가능성을 가지고 있지만 좋은 결과로 연결되어야 . 당신도 쉽게

다시 사용할 수 있도록 파일에서 결과를 캐시 할 수 있습니다 또는

+0

실제로 알고리즘의 복잡성은 아마 :-) 범위 아랍어 코드 포인트를 얻을 당신은 source of that class를 확인할 수'O (1)'. .. :-) –

+0

@Stephen 예, 클래스 메소드의 복잡성에 대해 이야기한다면 ...하지만 무작위 코드 포인트를 생성하기 위해 작성해야하는 메소드를 염두에 두어야합니다. 좋은 블록에 속하는지 테스트하고, 다른 블록을 다시 생성하십시오 코드 범위를 찾아 정확한 범위를 찾은 다음 모든 UnicodeBlock 인스턴스에 대해 다시 실행하여 유니 코드 블록의 모든 범위 목록을 가져옵니다. O (1) :-D가 아닌지 확실히 확신합니다. – Grooveek

관련 문제