问候全部;
我有一个桌面java应用程序,它在控制台窗口中提供以下输出:
[
{
"ew" : "ana"
"hws" : [
"\u0623\u0646\u0627"
]
}
]
我想从整个输出中分离这个字符串:“\ u0623 \ u0646 \ u0627”,以便仅对此字符串进行进一步处理。
我不知道该怎么办?但其中一个想法是使用REGEX。 但我怎么能这样做?
你能帮助我吗?
答案 0 :(得分:1)
鉴于附加信息
输出应为阿拉伯字母 \ u064A ...等。我的想法是搜索 输出直到\ u064A ...行 并将它们转换为阿拉伯语。有你 明白我的观点?我不知道该怎么做 解决这个问题,我是java的初学者。 抱歉有困惑,谢谢 为了你的回应。
输入来自http://www.google.com/transliterate/arabic?tlqt=1&langpair=en|ar&text=ana,masry&&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,masry&&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();
}
}