去哪兒筆試解決方案

有兩個文件context.txt和words.conf,請嘗試將他們合併成爲一段文字,並打印出來。 這兩個文件內容如下: context.txt 
“並不是每個人都需要$(qunar)自己的糧食,$(flight.1)每個人都需要做自己穿的$(flight.2),我們說着別人發明的$(hotel),使用別人發明的數學......我們一直在$(tuan)別人的成果。使用人類的已有經驗和知識$(travel.1)來進行,是一件$(travel.2)的事情”   
word.conf 

flight=也不是:衣服 

qunar=種植 

hotel=語言 

tuan=使用 

travel=發明創造:很了不起


解決方案:

package qunaer;


import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;


public class Test2 {


public String readContextTxt(){
FileReader fr=null;
BufferedReader br=null;
StringBuilder sb = new StringBuilder();
String returnValue=null;
try {
fr = new FileReader("context.txt");
br = new BufferedReader(fr);
String line;

while((line=br.readLine())!=null){
sb.append(line);
}
returnValue=sb.toString();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e){
e.printStackTrace();
} finally{

try {
if(br != null){
br.close();
}
if(fr != null){
fr.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
System.out.println(returnValue);
return returnValue;
}
public Map<String,String> readWordConf(){
FileReader fr = null;
BufferedReader br = null;
StringBuilder sb = new StringBuilder();
Map map = new HashMap();
try{
fr = new FileReader("word.conf");
br = new BufferedReader(fr);
String line;
while((line = br.readLine()) != null){
sb.append(line);
System.out.println(line);
String [] str = line.split("\\=");

map.put(str[0], str[1]);
}
}catch(Exception e){
e.printStackTrace();
}
return map;
}
public Map<String,String[]> getWordConf(Map<String,String> map){
Map<String,String[]> returnValue = new HashMap<String,String[]>();
for(Map.Entry<String, String> entry:map.entrySet()){
String key = entry.getKey();
String value = entry.getValue();
System.out.println("vvvvalue:"+value);
String [] str = value.split("\\:");
System.out.println("llllength:"+str.length);
returnValue.put(key, str);
}


System.out.println(returnValue);
return returnValue;
}
public String replaceValue(Map<String,String[]> map){
String txt = this.readContextTxt();

while(txt.indexOf("$(")!=-1){
int start = txt.indexOf("$(");
int end = txt.indexOf(")");

String sub = txt.substring(start+2, end);
String []arr = sub.split("\\.");

System.out.println("sub:"+sub+arr[0]);
String replace = null;
for(Map.Entry<String, String[]> entry:map.entrySet()){
String key = entry.getKey();
String []value = entry.getValue();
System.out.println("key:"+key+"  value.length:"+value.length);
if(key.equals(arr[0])){
if(arr.length>1){//表示含有小數點
replace = value[Integer.parseInt(arr[1])-1];
}else{
replace = value[0];
}

System.out.println("sub:"+sub+"  replace:"+replace);
txt = txt.replaceAll(sub, replace);
txt = txt.replaceFirst("\\$\\(", "");
txt = txt.replaceFirst("\\)", "");

break;
}
}
}

System.out.println(txt);
return txt;
}
public static void main(String []args){
Test2 t2 = new Test2();

Map map = t2.readWordConf();
Map<String,String[]> arrMap = t2.getWordConf(map);
String val = t2.replaceValue(arrMap);
}
}

發佈了20 篇原創文章 · 獲贊 0 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章