如何在Java中读取几种语言的文件?
我正在尝试用Java阅读和处理几种语言的词典。那么,我如何根据这一点来安排我的代码呢?谢谢 为了将其大写,我使用了以下命令:如何在Java中读取几种语言的文件?,java,localization,Java,Localization,我正在尝试用Java阅读和处理几种语言的词典。那么,我如何根据这一点来安排我的代码呢?谢谢 为了将其大写,我使用了以下命令: String str_uc=str.toUpperCase(Locale.ENGLISH); 但是其他语言不支持它,我正在尝试阅读 然而,主要的问题是,在将其他语言的文件转换为大写之前,我无法正确读取它们 以下是我到目前为止所做的。这本书是英语词典的完美之作 import java.util.ArrayList; import java.util.Lo
String str_uc=str.toUpperCase(Locale.ENGLISH);
但是其他语言不支持它,我正在尝试阅读
然而,主要的问题是,在将其他语言的文件转换为大写之前,我无法正确读取它们
以下是我到目前为止所做的。这本书是英语词典的完美之作
import java.util.ArrayList;
import java.util.Locale;
import java.io.*;
public class XmlCreating {
static ArrayList<Character> keywordletters = new ArrayList<Character>();
static ArrayList<Character> wordletters = new ArrayList<Character>();
static ArrayList<String> threeletter = new ArrayList<String>();
static ArrayList<String> fourletter = new ArrayList<String>();
static ArrayList<String> fiveletter = new ArrayList<String>();
static ArrayList<String> sixletter = new ArrayList<String>();
static ArrayList<String> sevenletter = new ArrayList<String>();
static ArrayList<String> words = new ArrayList<String>();
static ArrayList<String> allletters = new ArrayList<String>();
public static boolean hasApostrophe(String line){
for(int i=0; i<line.length();i++) {
if(line.charAt(i)=='\'' || line.charAt(i)=='-' )
return false;
}
return true;
}
public static void findLetters(String word, ArrayList<Character> ary) {
for(int i=0; i<word.length(); i++) {
ary.add(word.charAt(i));
}
}
public static boolean consistLetters(String keyword,String word) {
keywordletters.clear();
wordletters.clear();
findLetters(keyword,keywordletters);
findLetters(word,wordletters);
boolean found = false;
for(int i=0; i<wordletters.size(); i++) {
found=false;
for(int j=0; j<keywordletters.size(); j++) {
if(keywordletters.get(j)!='\''){
if(wordletters.get(i)==keywordletters.get(j)) {
keywordletters.set(j,'\'');
found=true;
break;
}
}
}
if(found!=true)
return false;
}
return found;
}
public static void findWords(String keyword){
words.clear();
for(int i=0; i<threeletter.size(); i++)
{
if(consistLetters(keyword,threeletter.get(i))==true)
words.add(threeletter.get(i));
}
for(int i=0; i<fourletter.size(); i++){
if(consistLetters(keyword,fourletter.get(i))==true)
words.add(fourletter.get(i));
}
for(int i=0; i<fiveletter.size(); i++){
if(consistLetters(keyword,fiveletter.get(i))==true)
words.add(fiveletter.get(i));
}
for(int i=0; i<sixletter.size(); i++){
if(consistLetters(keyword,sixletter.get(i))==true)
words.add(sixletter.get(i));
}
for(int i=0; i<sevenletter.size(); i++){
if(consistLetters(keyword,sevenletter.get(i))==true)
words.add(sevenletter.get(i));
}
}
public static void main(String args[]) {
//Locale.setDefault(new Locale("tr","TR"));
try {
FileInputStream fstream1 = new FileInputStream("en-GB.dic");
DataInputStream in = new DataInputStream(fstream1);
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String str;
while ((str = br.readLine()) != null) {
String str_uc=str.toUpperCase(Locale.ENGLISH);
if(hasApostrophe(str_uc)){
allletters.add(str_uc);
if(str.length()==3)
threeletter.add(str_uc);
else if(str.length()==4)
fourletter.add(str_uc);
else if(str.length()==5)
fiveletter.add(str_uc);
else if(str.length()==6)
sixletter.add(str_uc);
else if(str.length()==7)
sevenletter.add(str_uc);
}
}
in.close();
}
catch (Exception e) {
System.err.println(e);
}
System.out.println(sevenletter.size());
System.out.println(sixletter.size());
System.out.println(fiveletter.size());
System.out.println(allletters.size());
int noOfXml=(int)(sevenletter.size()/10);
int lastXml=(int)(sevenletter.size()%10);
try{
int a=0;
int b=10;
for(int x=1;x<noOfXml+1;x++) {
FileWriter fstream2 = new FileWriter(x+".xml");
BufferedWriter out = new BufferedWriter(fstream2);
out.write("<?xml version='1.0' encoding='utf-8' ?><dictionary>");
for(int i=a;i<b;i++) {
findWords(sevenletter.get(i));
out.write("<ltr s='"+sevenletter.get(i)+"' w=");
for(int j=0; j<words.size();j++) {
out.write("'"+words.get(j)+"'");
if(j<words.size()-1)
out.write(";");
}
out.write("/>");
}
a=b;
b=b+10;
out.write("</dictionary>");
//Close the output stream
out.close();
}}catch (Exception e){
System.err.println("Error: " + e.getMessage());
}
//for last five keywords
if(lastXml!=0) {
try{
FileWriter fstream3 = new FileWriter((noOfXml+1)+".xml");
BufferedWriter out1 = new BufferedWriter(fstream3);
out1.write("<?xml version='1.0' encoding='utf-8' ?><dictionary>");
for(int i=sevenletter.size()-lastXml;i<sevenletter.size();i++) {
findWords(sevenletter.get(i));
out1.write("<ltr s='"+sevenletter.get(i)+"' w=");
for(int j=0; j<words.size();j++) {
out1.write("'"+words.get(j)+"'");
if(j<words.size()-1)
out1.write(";");
}
out1.write("/>");
}
out1.write("</dictionary>");
//Close the output stream
out1.close();
}
catch (Exception e){
System.err.println("Error: " + e.getMessage());
}
}
}//main
}//class
import java.util.ArrayList;
导入java.util.Locale;
导入java.io.*;
公共类XmlCreating{
静态ArrayList关键字字母=新ArrayList();
静态ArrayList wordletters=新ArrayList();
静态ArrayList threeletter=新ArrayList();
静态ArrayList fourletter=新ArrayList();
静态ArrayList fiveletter=新ArrayList();
静态ArrayList sixletter=新ArrayList();
静态ArrayList sevenletter=新ArrayList();
静态ArrayList words=新ArrayList();
静态ArrayList allletters=新ArrayList();
公共静态布尔撇号(字符串行){
对于(inti=0;ii),我将每个文件编码为UTF-8
我会把每一本字典读入一个集合
可能是每一种语言的NavigableSet
,我会把它们放在一个由语言键控的地图上。另一种方法是在地图中使用单词作为键:
HashMap
正如Peter Lawrey所说,在同一张地图上
<(String) codeLanguage, Set(String) allLanguageWorld>>
>
如果你使用东方语言,你必须使用Unicode