这两个文件内容如下:
context.txt
“并不是每个人都需要$(qunar)自己的粮食,$(flight.1)每个人都需要做自己穿的$(flight.2),我们说着别人发明的$(hotel),使用别人发明的数学......我们一直在$(tuan)别人的成果。使用人类的已有经验和知识$(travel.1)来进行,是一件$(travel.2)的事情”
word.conf
flight=也不是:衣服
qunar=种植
hotel=语言
tuan=使用
travel=发明创造:很了不起
word.conf
flight=也不是:衣服
qunar=种植
hotel=语言
tuan=使用
travel=发明创造:很了不起
public class MergeText { public static void main(String[] args) { String a="并不是每个人都需要$(qunar)自己的粮食,$(flight.1)每个人都需要做自己穿的$(flight.2)," +"我们说着别人发明的$(hotel),使用别人发明的数学......我们一直在$(tuan)别人的成果。" +"使用人类的已有经验和知识来进行$(travel.1),是一件$(travel.2)的事情。"; System.out.println(f(a)); } public static String f(String s){ StringBuffer sb=new StringBuffer(); StringBuffer sb2=new StringBuffer(); int j=0; Map map=new HashMap(); map.put("flight.1", "也不是"); map.put("flight.2", "衣服"); map.put("qunar", "种植"); map.put("hotel", "语言"); map.put("tuan", "使用"); map.put("travel.1", "发明创造"); map.put("travel.2", "很了不起"); for(int i=0;i<s.length();i++){ if(s.charAt(i)!='$'){ sb.append(s.charAt(i)); }else{ for(j=i;;j++){ sb2.append(s.charAt(j)); if(s.charAt(j)==')'){ break; } } String a=new String(sb2); String a2=a.substring(2,a.length()-1); sb.append((map.get(a2)).toString()); sb2.delete(0, sb2.length()); i=j; } } return new String(sb); } }
package qunar; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.HashMap; public class Merge2File { public static void main(String args[]){ File context=new File("C:/Users/mao/nowCode/context.txt"); File word=new File("C:/Users/mao/nowCode/word.conf"); HashMap<String,String> wordsMap=new HashMap<String, String>(); try { //word.conf以GBK方式编码 BufferedReader wordReader=new BufferedReader((new InputStreamReader(new FileInputStream(word), "GBK"))); String temp=new String(wordReader.readLine().getBytes(),"UTF-8"); /***word.conf文件以UTF-8方式编码 BufferedReader wordReader=new BufferedReader(new FileReader(word)); String temp=wordReader.readLine(); wordReader.read(); //UTF-8编码格式的文件有一个文件头EF BB BF(65279),需要去掉 ********/ while(temp!=null){ String key=temp.split("=")[0]; String[] values=temp.split("=")[1].split(":"); if(values.length==1){ wordsMap.put(key, values[0]); temp=wordReader.readLine(); } else{ for(int i=0;i<values.length;i++){ wordsMap.put(key+"."+(i+1), values[i]); } temp=wordReader.readLine(); } } BufferedReader reader=new BufferedReader(new FileReader(context)); char[] buf=new char[(int) context.length()]; reader.read(buf); StringBuffer contextString=new StringBuffer(new String(buf)); int start=contextString.indexOf("$(", 0); while(start>0){ int end=contextString.indexOf(")", start); String target=new String(contextString.substring(start+2, end)); String value= wordsMap.get(target); contextString=contextString.replace(start, end+1, value); start=contextString.indexOf("$(", end); } System.out.println(contextString); } catch (IOException e) { e.printStackTrace(); } } }