2014年去哪儿网笔试题--有两个文件context.txt和words.conf,请尝试将他们合并成为一段文字,并打印出来。...

有两个文件context.txt和words.conf,请尝试将他们合并成为一段文字,并打印出来。

这两个文件内容如下:

context.txt

“并不是每个人都需要$(qunar)自己的粮食,$(flight.1)每个人都需要做自己穿的$(flight.2),我们说着别人发明的$(hotel),使用别人发明的数学......我们一直在$(tuan)别人的成果。使用人类的已有经验和知识$(travel.1)来进行,是一件$(travel.2)的事情” 

 

word.conf

flight=也不是:衣服

qunar=种植

hotel=语言

tuan=使用

travel=发明创造:很了不起

参考博客:http://blog.csdn.net/wuwenxiang91322/article/details/11694051

对程序进行一点修改简化,思路还是没有变化。

主要涉及两方面操作,一方面就是文件的读取,也就是Java的IO操作;另一方面考察String的相关操作。

首先将两个文本读取,第一个文本context.txt可用FileReader 直接读取为String类型 ,第二个word.conf需要逐行读取采用的是BufferedReader 。

剩下就是word.conf读取内容转化为HashMap 用于下一步的查找替换,采用原作者的方式。

最后就是利用构建的HashMap对读取的context.txt内容进行替换。

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

public class TransferWord {
    public static void main(String[] args) throws IOException {
        String path = "D://word.conf";
        String contentPath = "D://context.txt";
        FileReader con = new FileReader(contentPath);
        FileReader word = new FileReader(path);
        // 读取主文件内容
        char[] cs = new char[500];
        int len = 0;
        String contextString = null;
        while ((len = con.read(cs)) != -1) {
            contextString = new String(cs, 0, len);
            System.out.println("文本内容:"+contextString);
        
        }
        con.close();
        // 配置文件注入hash
        BufferedReader br = new BufferedReader(word);
        String str;
        Map<String, String> map = new HashMap<String, String>();
        while ((str = br.readLine()) != null) {
            String pre = str.substring(0, str.indexOf("="));
            String sub = str.substring(str.indexOf("=") + 1, str.length());
            String[] arr = sub.split(":");
            if (arr.length != 1) {
                for (int i = 1; i <= arr.length; i++) {
                    map.put("$(" + pre + "." + i + ")", arr[i - 1].trim()); // 去掉首尾空格
                }
            } else {
                map.put("$(" + pre + ")", sub.trim());

            }
        }
        br.close();
        //进行替换操作
      Iterator iter=map.keySet().iterator();
      while(iter.hasNext()){
           String key=iter.next().toString();  
           String value=map.get(key);  
           if(contextString.contains(key)){  
               contextString=contextString.replace(key,value);
           }
      }
      //输出字符串
      System.out.println("新的文本内容:"+contextString);
    }
}

 

转载于:https://www.cnblogs.com/sunrunzhi/p/3958278.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值