1. 程式人生 > 其它 >java中遇到過的String的一些特性

java中遇到過的String的一些特性

1.string物件是final的?

1 String str="asdfdf";
2 str.replace("as","");
3 System.out.println(str);//asdfdf
4 str=str.replace("as","");
5 System.out.println(str);//dfdf

2.字串的切割

遇到根據url獲取引數的問題: enterId = Long.parseLong(target.split("/")[2]);這個要處理切割字串問題splitapi裡是這樣的: public String[] split(String regex,int limit)根據匹配給定的正則表示式來拆分此字串。 此方法返回的陣列包含此字串的子字串,每個子字串都由另一個匹配給定表示式的子字串終止,或者由此字串末尾終止。陣列中的子字串按它們在此字串中出現的順序排列。如果表示式不匹配輸入的任何部分,那麼所得陣列只具有一個元素,即此字串。limit 引數控制模式應用的次數,因此影響所得陣列的長度。如果該限制 n 大於 0,則模式將被最多應用 n - 1 次,陣列的長度將不會大於 n,而且陣列的最後一項將包含所有超出最後匹配的定界符的輸入。如果 n 為非正,那麼模式將被應用盡可能多的次數,而且陣列可以是任何長度。如果 n 為 0,那麼模式將被應用盡可能多的次數,陣列可以是任何長度,並且結尾空字串將被丟棄。 例如,字串 "boo:and:foo" 使用這些引數可生成以下結果: Regex Limit 結果 : 2 { "boo", "and:foo" } : 5 { "boo", "and", "foo" } : -2 { "boo", "and", "foo" } o 5 { "b", "", ":and:f", "", "" } o -2 { "b", "", ":and:f", "", "" } o 0 { "b", "", ":and:f" } public String[] split(String regex)根據給定正則表示式的匹配拆分此字串。 該方法的作用就像是使用給定的表示式和限制引數 0 來呼叫兩引數 split 方法。因此,所得陣列中不包括結尾空字串。 例如,字串 "boo:and:foo" 使用這些表示式可生成以下結果: Regex 結果 : { "boo", "and", "foo" } o { "b", "", ":and:f" } 引數:regex - 定界正則表示式 返回:字串陣列,它是根據給定正則表示式的匹配拆分此字串確定的 丟擲: PatternSyntaxException - 如果正則表示式的語法無效

3.對json字串去空值

上傳程式碼錯誤導致資料庫中地址儲存有問題,有一些空的value,還有結尾多了兩個鍵值對,當然也有的沒問題。對sql掌握比較差,於是選擇了用java處理,更新資料庫。

處理的資料物件是這樣的:

1 '{"showImg_1":"/upload/webHome/template/4ddedebb-7615-4686-b27a-b515a6a5a2cc.jpg","showImg_2":"/upload/webHome/template/2c0806ee-6165-4b95-949d-340ddad18171.jpg","showImg_3":"/upload/webHome/template/35464a57-a987-4e40-91b4-f5b33e343f46.jpg","showImg_4":"/upload/webHome/template/9bddbbd6-1ad2-4290-b087-caa26bf93197.jpg","showImg_5":"/upload/webHome/template/604b7531-384b-4052-93cb-e5d51182023b.jpg","showImg_6":"/upload/webHome/template/4673cf82-fa07-4acc-ac7c-e5c7ef9af687.jpg","showImg_7":"","showImg_8":"","emplate.quickmark":"/upload/webHome/template/27b4cb88-b3b2-4046-bedd-c4ad92735310.jpg","emplate.img":"/upload/webHome/template/7949e9eb-eb86-4d54-ab09-1271ea202b2e.jpg"}'

用的jfinal框架:

 1 /**
 2      * 處理錯誤資料
 3      */
 4     public void manageSQL(){
 5         String sql="select * from _table";
 6          List<Record> list=Db.find(sql);
 7          setAttr("length",list.size());
 8          for(int i=0; i<list.size(); i++){
 9              //取出一條記錄
10              Record r=list.get(i);
11              //取出json資料
12              String json=r.getStr("showImg");
13              setAttr("old=",json);
14              //去除emplate為key的開頭的錯誤資料
15              int ind=json.indexOf(","emplate");
16              if(ind>0){
17                  json=json.substring(0, ind)+"}";
18              }
19              setAttr("new=",json);
20              //去除value為""的元素
21              json=json.replaceAll("((?<=\{)"\w+":"",|,*"\w+":"")", "");
22              setAttr("all:"+i,json);
23              
24              System.out.println(json+"=========");
25              
26              //入庫儲存更新
27              r.set("showImg", json);
28              
29              Db.update("home_template",r);
30              
31          }
32          
33          renderJson();
34     }

4.String物件的一些方法:

length() - 返回長度,注意和js中不同,js裡面是length屬性。

     對應長度:Array的長度-length;List的長度-size();