Как сопоставить арабские символы Юникода в строке с Java? - PullRequest
1 голос
/ 28 марта 2011

Greetings All;

У меня есть настольное Java-приложение, которое выдает следующий вывод в окне консоли:

[
{
"ew" : "ana"
"hws" : [
"\u0623\u0646\u0627"
]
}
]

Я хотел бы отделить эту строку: "\ u0623 \ u0646\ u0627 "из всего вывода для дальнейшей обработки только этой строки.

Я не знаю, как это сделать?Но одна из идей - использовать REGEX.Но как я мог это сделать?

Не могли бы вы мне помочь?

1 Ответ

1 голос
/ 28 марта 2011

с учетом дополнительной информации

На выходе должны быть арабские буквы \ U064A ... и т.д.. Моя идея состояла в том, чтобы искать вывод до \ u064A ... строк и преобразовать их в арабский. Есть ли у вас получить мою точку зрения? Я не знаю как Решите это, я новичок в Java. Извините за путаницу и спасибо за ваш ответ.

И что входные данные поступают от http://www.google.com/transliterate/arabic?tlqt=1&langpair=en|ar&text=ana,m­asry&&tl_app=1, вы можете решить это так:

import java.net.*;
import java.io.*;
import java.util.*;
import java.util.regex.*;

public class URLConnectionReader {
    public static void main(String[] args) throws Exception {
    URL googleUrl = new URL("http://www.google.com/transliterate/arabic?tlqt=1&langpair=en|ar&text=ana,m­asry&&tl_app=1");
    URLConnection googleUrlc = googleUrl.openConnection();
    BufferedReader in = new BufferedReader(new InputStreamReader(googleUrlc.getInputStream()));
    String inputLine;
    Pattern wordRegex = Pattern.compile("\"(\\\\u[\\da-z]{4})+\"", Pattern.CASE_INSENSITIVE);
    Pattern charRegex = Pattern.compile("\\\\u([\\da-z]{4})", Pattern.CASE_INSENSITIVE);
    while ((inputLine = in.readLine()) != null) {
        Matcher wordMatch = wordRegex.matcher(inputLine);
        for (int i = 0; wordMatch.find(); i++) {
        StringBuffer arabicBuffer = new StringBuffer();
        Matcher charMatch = charRegex.matcher(wordMatch.group());
        for (int j = 0; charMatch.find(); j++) {
            arabicBuffer.appendCodePoint(Integer.valueOf(charMatch.group(1), 16));
        }
        if (0 < arabicBuffer.length()) {
            System.out.println(arabicBuffer.toString());
        }       
        } 
    }
    in.close(); 
    }
}
...