2016-09-16 1 views
2

아래 코드에서 특정 길이의 줄을 읽으려고 시도하고 다른 메모장에 씁니다.이 코딩은 영어 문자에서 잘 작동합니다. 내가 계산하려고하면하지만, 타밀어 문자에 대한 ... 그것은뿐만 수 :타밀어 문자 세그멘테이션을 사용하여 자바

(예) தமிழ்

가 5로 계산 .. (예) "த", "ம", "ி", " ब "및"் ". 는하지만 난 텍스트 파일에서 여러 단어를이 논리를 적용 할

.... "ழ்" "மி", 3 (예) "த"로 계산하고 싶은

import java.io.BufferedReader; 
import java.io.BufferedWriter; 
import java.io.FileReader; 
import java.io.FileWriter; 

public class ii { 

public static void main(String[] args) { 
FileReader fr = null; 
BufferedReader br =null; 
FileWriter fw=null; 
BufferedWriter bw=null; 

String [] stringArray; 
int counLine = 0; 
int arrayLength ; 
String s=""; 
String stringLine=""; 

try{ 
    fr = new FileReader("F:\\New folder (2)\\N.txt"); 
    fw=new FileWriter("F:\\New folder (2)\\o.txt"); 
    br = new BufferedReader(fr); 
    bw=new BufferedWriter(fw); 
    while((s = br.readLine()) != null){ 
     stringLine = stringLine + s; 
     stringLine = stringLine + " "; 
     counLine ++; 
    } 
    stringArray = stringLine.split(" "); 
    arrayLength = stringArray.length; 
for (int i = 0; i < arrayLength; i++) { 
     int c = 1 ; 
     for (int j = i+1; j < arrayLength; j++) { 
      if(stringArray[i].equalsIgnoreCase(stringArray[j])){ 
       c++; 
       for (int j2 = j; j2 < arrayLength; j2++) 
        { 
        }} 
     int k; 
      for(k=2;k==stringArray[i].length();i++) 
      { 
      bw.write(stringArray[i]); 
      bw.newLine(); 

      }}} fr.close(); 
     br.close(); 
     bw.flush(); 
     bw.close(); 
     }catch (Exception e) { 
     e.printStackTrace(); 
     }}} 
+1

가능한 복제본. http://stackoverflow.com/questions/15947992/java-unicode-string-length –

답변

0

기본적으로 이것은 인코딩 문제로 인해 발생합니다. 먼저 텍스트 파일을 변경합니다. 아래 단계를 수행하여 Java 프로젝트의 인코딩을 처리합니다.

프로젝트를 마우스 오른쪽 버튼으로 클릭합니다. 이름 => 속성 선택 => 리소스 선택 => 텍스트 파일 인코딩 => 다른 인코딩으로 UTF-8을 선택하면

그러면 문제가 해결 될 것입니다.

+0

아직도 작동하지 않습니다. – priya

+0

@priya 언급 한 단계를 수행하지 못했던 것 같습니다. 문제가 발생하여 적절한 출력을 얻었 기 때문입니다. . – KAmit

+0

k ...... 다시 한번 시도해 보겠습니다 ...... – priya

0

메모장은 기본적으로 UTF 문자를 지원하지 않습니다. 대신 ANSI를 지원합니다. 그러나 문제는 이것 때문이 아닙니다.

프로그램은 읽거나 쓰는 동안 사용할 인코딩을 알아야합니다. 마술은 없습니다. 인코딩을 설정해야합니다 (예 : -UTF8). FileReader의 구성은 명확하게 작동하지 않는 기본 플랫폼 코딩을 사용합니다.

나는 당신이 필요로하는 것 같아요 -

Reader reader = new InputStreamReader(new FileInputStream("c:/foo.txt"), "UTF-8"); 

Read file and write file which has characters in UTF - 8 (different language)

+0

문자 수는 5, 실제 카운트 수는 어떻게 되나요?, 3 –

+0

여전히 작동하지 않습니다. – priya

1

한 가지 방법은의 BreakIterator와 문자를 통해 반복, 그들에게 자신을 계산하는 것입니다. (테스트되지 않은 코드)

int characterCount = 0; 
BreakIterator iterator = BreakIterator.getCharacterInstance(); 
iterator.setText("தமிழ்"); 
int boundary = iterator.first(); 

while (boundary != BreakIterator.DONE) { 
    characterCount++; 
    boundary = iterator.next(); 
} 

문자열은 유니 코드 표시 및 유니 코드 문자를 계산하기 때문에이 또한 http://docs.oracle.com/javase/tutorial/i18n/text/char.html

+0

문자 파일에서 여러 문자를 계산하려면 – priya

+0

반복자를 깨는 점 – Joni

0

참조하십시오. 유니 코드 표시를 무시하려면 다음과 같이 정규 표현식을 사용할 수 있습니다.

import java.util.regex.*; 
...... 
String word = "தமிழ்"; 
String regex = "[^\u0bbe-\u0bcd.]"; 
    Pattern r = Pattern.compile(regex); 
    Matcher m = r.matcher(word); 
    int count=0; 
while (m.find())count++; 
System.out.print(count); 
+0

hii ... 답장을 보내 주셔서 감사합니다 ... 한 단어로 된 gd입니다. 그러나 여러 개의 유니 코드 단어로 된 파일을 사용하는 방법은 .. 우리는 어디에서 3 자의 단어를 얻고 싶습니까? – priya

+0

코드는 파일의 모든 타밀어 문자에 대해 독립적입니다. 같은 대답을 사용하고 문자열에있는 모든 타밀어 문자를 카운트 – Neechalkaran

+0

답장을 보내 주셔서 감사합니다 ... – priya