public void replaceVariable() throws IOException {
    Closer closer = Closer.create();
    try {
      FileReader fReader = new FileReader();
      List<String> content = fReader.getContent(FictionURL);
      Properties indexOrderProperties = getIndexOrder();
      List<String> natureOrderList = getNatureOrder(propertiesURL);
      List<String> charOrderList = getCharOrder(natureOrderList);
      Pattern p = Pattern.compile("\\$(\\w+)\\((\\d+)\\)");
      OutputStreamWriter streamWriter =
          closer.register(new OutputStreamWriter(new FileOutputStream("result.txt"), "UTF-8"));

      for (String tempStr : content) {
        Matcher m = p.matcher(tempStr);
        while (m.find()) {
          String orderName = m.group(1);
          String num = m.group(2);
          int listSize = natureOrderList.size();
          if (orderName.equals("natureOrder"))
            tempStr = tempStr.replace(m.group(), natureOrderList.get(Integer.parseInt(num)));
          else if (orderName.equals("charOrder"))
            tempStr = tempStr.replace(m.group(), charOrderList.get(Integer.parseInt(num)));
          else if (orderName.equals("charOrderDESC"))
            // 倒序为正序下标为:下标位置(集合总数-1)-倒序位置
            tempStr =
                tempStr.replace(m.group(), charOrderList.get(listSize - 1 - Integer.parseInt(num)));
          else if (orderName.equals("indexOrder")) {
            if (indexOrderProperties.getProperty(num) != null)
              tempStr = tempStr.replace(m.group(), indexOrderProperties.getProperty(num));
            else tempStr = tempStr.replace(m.group(), "null");
          }
        }
        streamWriter.write(tempStr + "\n");
        System.out.println(tempStr);
      }
    } finally {
      closer.close();
    }
  }