一个字符串想弄成Properties 存储,该如何处理?字符串:dayId="20061012" recordId="0" timeRecv="2006/10/1221:52:21" timeGen="2006/10/12 21:52:21" domain="" devDomVer2="0"这样该如何处理呢?

解决方案 »

  1.   

    就写入properties文件,去掉引号就可以
      

  2.   


    Properties p = new Properties();
            p.setProperty("dayId", "20061012");
            p.setProperty("recordId", "0");
            p.setProperty("timeRecv", "2006/10/1221:52:21" );
            p.setProperty("timeGen", "2006/10/12 21:52:21");
            p.setProperty("domain", "");
            p.setProperty("devDomVer2", "0");
            System.out.println(p);
      

  3.   

    是读取一个字符串,然后转换成properties。字符串不一定是什么样的,但是格式是上述的。楼上2位都没明白意思。
      

  4.   

        -----------------------
              Quietly through ...
      

  5.   

    你可以根据=分别找出=好左右两边的值,然后在把它放到properties里。  ------------------------------------
              Quietly through ...
      

  6.   

    你知道有多少个等号么?那样的话我就不用转换成properties了,直接就处理了
      

  7.   

    那你到底想做成什么样的?----------------------------------
              Quietly through ...
      

  8.   


    看下问题就知道了。一个类似于1楼的字符串。将其自动转换成properties格式。
      

  9.   

    public Properties loadMsg(String msg)
    {
    try{
    FileInputStream fis=new BufferReader(msg);
    }
    catch(Exception ex)
    {
    ex.getStackTrace();
    }
    Properties prop=new Properties(fis);

    return prop;
    }类似这样的处理程序。
      

  10.   

    public class Fa { /**
     * @param args
     */
    public static void main(String[] args) {
       String str="dayId=\"20060112\"recordId=\"0\"time=\"2006/10/1221:52:21\"";
    System.out.println(str);
    String[] arg =str.split("\"");
    Properties p = new Properties();
    for(int i=0;i<arg.length ;i+=2) {
          String temp1 = arg[i].substring(0,arg[i].length()-1);
         String temp2 = arg[i+1];
    p.setProperty(temp1, temp2);
    }

            System.out.println(p);
    }
    }不知道对不对,希望高手出现.....
      

  11.   


    如果要是象你那么弄我就不需要弄成properties来处理了。况且字符串里边没有"\"这个符号。有处理这个时间早都把那个处理好了
      

  12.   

    dayId=20061012
    recordId=0 
    timeRecv=2006/10/1221:52:21
    timeGen=2006/10/12 21:52:21
    domain=
    devDomVer2=0
    楼主想要这个效果?1.去掉引号
    2.(字段间以空格为分隔符的话)就把空格换成回车,存入*.properties 
    3.可能会出现中文字符无法写入的情况,需要将汉字转换成unicode编码,
    4.才疏学浅,如有纰漏,请见谅。。
      

  13.   

    \ 号是为了输出"而用的 转义字符好不好.........难道要这样写啊, String str= dayId="20060112"recordId="0"time="2006/10/1221:52:21"; 
    你看过字符串有这样赋值的吗,那你要怎么样,不懂
      

  14.   


    从syslog里边的获得的字符串就是那个样子的。若能按照你那样改那个程序就不需要用properties来处理了
      

  15.   

    按道理应该是2个"为一组(\"除外),找出每组最后一个"的位置,然后按这个位置分段,trim一下,再将每段去掉"写入properties文件但是这里有一个比较便捷的方法
    已知properties文件的格式,所以只要从头到尾检查",\"除外,每2个换为\n,然后直接写入文件就可以了
      

  16.   

    import java.util.Properties;public class Test3 {    public static void main(String[] args) {
            String str = "dayId=\"20061012\"" +
                    "recordId=\"0\"" +
                    "timeRecv=\"2006/10/12 =21:52:21\" " +
                    "timeGen = \"2006/10/12 21:52:21\" " +
                    "domain=\"\" " +
                    "hello=\"test\\\"adfad\"" +
                    "devDomVer2=\"0\"";
            System.out.println(str);
            
            String[] strs = str.split("(?:\\s+|(?<=\"))(?=[^\"]+\\s*=\\s*\")");
            Properties pro = new Properties();
            for(int i = 0; i < strs.length; i++) {
                int index = strs[i].indexOf('=');
                String key = strs[i].substring(0, index).trim();
                String value = strs[i].substring(index + 1).trim().replaceAll("^\"|\"$", "");
                pro.put(key, value);
            }
            pro.list(System.out);        
        }
    }
      

  17.   

    message_resource_zh.properties
    MSG.MENUITEM.TOTLEBUG=\u969c\u5bb3\u7d71\u8a08
    MSG.MENUITEM.TRANBUG=\u969c\u5bb3\u8868\u7ffb\u8a33
    MSG.MENUITEM.USERMANAGE=\u7528\u6237\u7ba1\u7406
    MSG.MENUITEM.GROUPMANAGE=\u7ec4\u7ba1\u7406
    MSG.MENU.BUGPROJECT=\u969c\u788d\u8868\u51fa\u529b
    就按照上面的文件形式存储就好了,一个名字,一个值,中间用等号,和hashtable的形式差不多,键值对。