国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
java replaceall 用法

public class TryDotRegEx {
public static void main(String[] args) {
// TODO Auto-generated method stub
String str = "111.3.22.11";
str=str.replaceAll("(^|\\.)(\\d)(\\.|$)","$100$2$3");
str=str.replaceAll("(^|\\.)(\\d{2})(\\.|$)","$10$2$3");
str=str.replaceAll("(^|\\.)(\\d{2})(\\.|$)","$10$2$3");
str=str.replaceAll("(^|\\.)(\\d{1})(\\.|$)","$100$2$3");
        
System.out.println(str);
}

}

打印結(jié)果:111,003,022,011;


正則表達(dá)式,關(guān)于String.replaceALL(..)

 

 

正則表達(dá)式,關(guān)于String.replaceALL(..)
2005-3-25 15:03:55
regex:

class t1 {
       public static void main(String a[]) {
         String s = 'E:\\jbx\\x9\\io9';
         String ss;
//把路徑s中的'\'換為'\\',為何還要整8個(gè)'\'?我以為4個(gè)就行了。
         ss = s.replaceAll('\\\\', '\\\\\\\\         System.out.println('s= ' + s);
         System.out.println('ss=' + ss);
//output:  
//s= E:\jbx\x9\io9
//ss=E:\\jbx\\x9\\io9
       }
}

這里的關(guān)鍵是String.replaceAll()是用regular expression 來作為參數(shù)的。但是java本身的字符串對(duì)于轉(zhuǎn)義符\也有類似的處理。首先,java會(huì)把“\\\\”解釋成一個(gè)字符串(其中包含兩個(gè)char)——“\ \”這個(gè)就是你在JDK的文檔里看到的。
接下來,由于replaceAll是以正則表達(dá)式作為參數(shù),所以“\\”被解釋成一個(gè)regex。對(duì)于一個(gè)regex來說這就代表著一個(gè)字符,就是“\”。對(duì)后面的那個(gè)8個(gè)\來說,最終會(huì)被解釋成“\\”。

換言之,假設(shè)String.replaceAll()是以普通字符串,而不是regex作為參數(shù),那么這樣寫代碼: String target = source.replaceAll('\\', '\\\\'); 就可以了。

===============================
在replaceAll(String,String)方法中需要特殊處理英文狀態(tài)的括號(hào),在網(wǎng)上找了一下,可以使用下面的寫法將英文括號(hào)替換成其他字符(比如中文全角括號(hào)):str1.replaceAll("\\(","(");

========================

Java String replaceAll and regex

在java中要將一個(gè)字符串的中$符號(hào)去除。我是這樣寫的:
String tmp = "-$125402.00";
tmp.replaceAll("$","");
可是執(zhí)行去來的結(jié)果并沒有把$去除。后來找資料才發(fā)現(xiàn)要這樣寫
tmp.replaceAll("\\$","")才可以。
String replaceAll(String regex, String replacement)中的兩個(gè)參數(shù)都是regex。尤其是當(dāng)?shù)诙€(gè)參數(shù)replacement是用戶輸入或指定的字符串時(shí),如果其中包含regex特殊字符(主要是\和$)而不加注意,就容易導(dǎo)致問題引發(fā)異常。這種情況下如果只是簡單的字符串替換而無需regex引擎參與的話,就不要用 replaceAll好了。JDK1.5中加入了String replace(CharSequence target, CharSequence replacement),可以用它。JDK1.4或以下,自己搞一個(gè)好了,如oldReplace:http://www.javapractices.com/Topic80.cjp
    

我在寫程序的時(shí)候,需要將"\"字符寫入一個(gè)文本文件,開始以為這不是個(gè)什么問題,轉(zhuǎn)換一下就好了嘛,代碼如下:

targetPath = targetPath.replaceAll("\\", "\\\\");
fileOperate.createFile(fileName, targetPath);

 

原以為沒有問題,這樣就可以先在讀入的字符串中把"\"轉(zhuǎn)換為"\\",然后在寫入文本文件時(shí)就會(huì)寫成"\",沒想到,報(bào)如下錯(cuò)誤:

java.util.regex.PatternSyntaxException: Unexpected internal error near index 1
\

回來查了資料才發(fā)現(xiàn),java的replaceAll函數(shù),使用的是正則表達(dá)式作為轉(zhuǎn)換依據(jù),而"\"在正則表達(dá)式中也是特殊字符,最后,寫成下面的代碼才達(dá)到了我預(yù)想的目的:

targetPath = targetPath.replaceAll("\\\\", "\\\\\\\\");
fileOperate.createFile(fileName, targetPath);

 

=====================================

replace和replaceAll方法的區(qū)別:

主要就是后者是基于規(guī)則表達(dá)多的替換,而前者是一般的基于字符或字符序列本身的替換。

比如,可以通過replaceAll("\\d", "*")把一個(gè)字符串所有的數(shù)字字符都換成星號(hào),replace就做不到,因?yàn)樗皇腔谝?guī)則表達(dá)多的替換

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
理解 Java 正則表達(dá)式怪異的 \ 和 \\,讓您見怪不怪 | 隔葉黃鶯 Unmi Bl...
JAVA與正則表達(dá)式
Java過濾特殊字符的正則表達(dá)式 - Java - JavaEye論壇
過濾特殊字符
replace和replaceAll的區(qū)別
正則表達(dá)式的替換功能:replaceAll
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服