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();