设计算法将下面的配置文件中的注释部分去掉,留下有用的内容//这是xxx系统的配置文件
////////////////////////////////
/*
      该配置文件控制着软件的运行过程
   ..... ....
*/maxUsers=50 //最大用户数
/*超时设置*/ IdleTimeOut=300 //单位:秒
database=/*数据库别名*/ mySql5.0
/*数据库登录*/user=root
password=mysql /*数据库密码*/
////////////////////////////////
//xxx系统配置文件结束

解决方案 »

  1.   

    ////////////////////////////////
    maxUsers=50
    IdleTimeOut=300 
    database=mySql5.0
    user=root 
    password=mysql 
    //////////////////////////////// 
      

  2.   

    是写实现方法吗?用java.io.PushbackReader就能实现.
      

  3.   


    public class ClearComment { public static void clearComment() 
    {
    try 
    {
    BufferedReader br = new BufferedReader(new FileReader("F:/temp/config.txt"));
    PrintWriter pw = new PrintWriter(new FileWriter("F:/temp/new-config.txt"));
    StringBuilder longStr = new StringBuilder("");
    String temp = null;

    while((temp = br.readLine()) != null)
    longStr.append(temp.trim() + "\n");    // 将文件的字符串都连接起来,不过得以'\n'分隔开

    // 然后去除这个长字符串的注释
                            String result = clearComment(longStr);
    System.out.println(result);
    pw.println(result);
    pw.flush();

    catch (FileNotFoundException e) 
    {
    e.printStackTrace();

    catch (IOException e) 
    {
    e.printStackTrace();
    }
    }

    public static String clearComment(StringBuilder longStr) 
    {
    StringBuilder result = new StringBuilder("");
    boolean isBlockCommentStart = false;    // 之前是否有"/*",如果有,并且还没有结束,则true
    boolean isRowCommentStart = false;      // 之前是否有"//",如果有,并且还没有结束,则true

    int index = 0;
    while(index < longStr.length())
    {
    String subStr = "";
    if(index != longStr.length() - 1)
    subStr = longStr.substring(index, index + 2); if(!isBlockCommentStart)
    {
    if(!isRowCommentStart)
    {
    if("//".equals(subStr))
    {
    isRowCommentStart = true;
    index += 2;
    }
    else if("/*".equals(subStr))
    {
    isBlockCommentStart = true;
    index += 2;
    }
    else
    {
    char c = longStr.charAt(index);
    if(c != ' ' && c != ' ')
    result.append(longStr.charAt(index));
    index ++;
    }
    }
    else
    {
    if('\n' == longStr.charAt(index))
    {
    isRowCommentStart = false;
    result.append('\n');
    }

    index ++;
    }
    }
    else
    {
    if("*/".equals(subStr))
    {
    isBlockCommentStart = false;
    index += 2;
    }
    else
    index ++;
    }
    }

    return result.toString();
    }

    public static void main(String[] args) {
    clearComment();
    }
    }这是我帮你实现的一个算法,刚看到你的描述时,觉得很简单,但是真正去处理的时候,才发现真的不如想象的那么简单。
    你可以先运行下试试,如果有不合意的地方,可以稍作修改,如果还有问题,你给我的博客留言。