1. 程式人生 > >正則只替換URL字串裡面的漢字部分

正則只替換URL字串裡面的漢字部分

URL為 http://192.168.1.1:8080/resources/電話.xls
如果使用 URLEncoder.encode 將會把冒號等一塊給替換了
http%3A%2F%2F192.168.1.1%3A8080%2Fresources%2F%E7%94%B5%E8%AF%9D.xls

這並不是我們需要的,我們只希望替換編碼裡面中文的部分,這裡給出瞭解決方法,很簡單

  1. package log;
  2. import java.io.UnsupportedEncodingException;
  3. import java.net.URLEncoder;
  4. import java.util.regex.Matcher;
  5. import java.util.regex.Pattern;
  6. /**
  7.  * 正則替換字串裡面的漢字部分。
  8.  * 
  9.  * @author 趙學慶 www.java2000.net
  10.  */
  11. publicclass URLEncoderHZ {
  12. publicstaticvoid main(String[] args) throws Exception {
  13.     String str = "http://192.168.1.1:8080/resources/電話.xls";
  14.     System.out.println(encode(str, "UTF-8"));
  15.   }
  16. privatestatic String zhPattern = 
    "[/u4e00-/u9fa5]+";
  17. /**
  18.    * 替換字串卷
  19.    * 
  20.    * @param str 被替換的字串
  21.    * @param charset 字符集
  22.    * @return 替換好的
  23.    * @throws UnsupportedEncodingException 不支援的字符集
  24.    */
  25.   publicstatic String encode(String str, String charset) throws UnsupportedEncodingException {
  26.     Pattern p = Pattern.compile(zhPattern);
  27.     Matcher m = p.matcher(str);
  28.     StringBuffer b = new StringBuffer();
  29. while (m.find()) {
  30.       m.appendReplacement(b, URLEncoder.encode(m.group(0), charset));
  31.     }
  32.     m.appendTail(b);
  33. return b.toString();
  34.   }
  35. }

執行結果

http://192.168.1.1:8080/resources/%E7%94%B5%E8%AF%9D.xls 

相關推薦

替換URL字串裡面漢字部分

URL為 http://192.168.1.1:8080/resources/電話.xls 如果使用 URLEncoder.encode 將會把冒號等一塊給替換了 http%3A%2F%2F192.168.1.1%3A8080%2Fresources%2F%E7%94%

js獲取富文字中的第一張圖片url公式及去除字串裡面的html標籤的公式

js獲取富文字中的第一張圖片url正則公式及去除字串裡面的html標籤 後臺發來一個富文字字串裡面可能包含了0、1、2、3…個圖片標籤(img),我們的任務是獲取這個字串裡面第一張圖片的url,如果沒有圖片則返回空 var imgUrlFun = function(str){

使用表示式替換字串

實現效果:    知識運用:   Regex類的Replace()方法:用於替換在指定字串內匹配正則式的字串為某字串   public static string Replace(string input,string pattern,string replacement)   input 

js批量替換字串-字串批量替換

let str =  "sdfsfwwxxxfsfsxxdsdfwsdfxxxxa3sdswexxxxsdfsxxxxfa" let newStr = str.replace(new RegExp(/xxx/g), "YYY")  console.log(newStr)&

Python表示式如何進行字串替換

Python正則表示式在使用中會經常應用到字串替換的程式碼。有很多人都不知道如何解決這個問題,下面的程式碼就告訴你其實這個問題無比的簡單,希望你有所收穫。 1.替換所有匹配的子串用newstring替換subject中所有與正則表示式regex匹配的子串 result

表示式替換全部 中文漢字 英文 數字

簡單說明下用正則表示式替換全部中文漢字、英文、數字的方法 。 使用工具,Notepad2(或者支援正則表示式的都可以) 替換表示式: [a-zA-Z]+ [!^1-^127] 英文 數字 所有小寫英文字母[a-z] 所有大寫英文字母[A-Z] 所有西文字元[^1-^1

notepad++表示式替換字串詳解

正則表示式是一個查詢的字串,它包含一般的字元和一些特殊的字元,特殊字元可以擴充套件查詢字串的能力,正則表示式在查詢和替換字串的作用不可忽視,它 能很好提高工作效率。 EditPlus的查詢,替換,檔案中查詢支援以下的正則表示式: 表示式 說明 /t 製表符.

表示式提取URL中的檔名和替換

完整的實現替換如下:string temp="http://localhost:2045/glietnet/image/news/news20060414105529.jpg";string tem

notepad2表示式替換字串

例子:1-385-463-3226替換成13854633226Ctrl+H開啟替換,選中‘regular expression search’或者正則表示式:上面輸入:1-(.*)-(.*)-(.*)下面輸入:1\1\2\3替換即可說明:.*表示任何字元()括號括起來的部分可

匹配 替換..追加..

bbs csdn 正則 flow code pan net eval nbsp 這裏都是以 圖片中的元素為例: 匹配出IMG標簽中alt的值: 1 Regex reg = new Regex(@"(?is)(?<=<img[^>]*)[^""]*(?

表達式之匹配中文漢字表達式介紹

我想 但是 則表達式 來講 介紹 bsp code 分鐘 想要 這篇文章主要介紹了通過正則表達式準確匹配出字符串中存在的中文漢字,同時還有匹配雙字節字符的正則,需要的朋友可以參考下 \w匹配的僅僅是中文,數字,字母,但是對於特殊需求來講,僅匹配中文時常會用到 匹配中文字符

Django框架之表達式URL誤區

def mage 郵箱 tar 並且 相關 div 比較 開始 問題:我學習的視頻大概是2015年錄的,裏面用的Django版本比較老關於正則表達式URL這一塊都是用的url(“url(r‘^admin/‘, admin.site.urls),”)方法。而我自己練習的時候是

2018.4.26 六周第二次課 (sed 替換

sedsed工具介紹(替換、及替換指定的字符) sed介紹:sed工具主要是替換的文本輸出到屏幕上,而且還有其他更豐富的功能。sed命令格式:sed -n ‘n‘ p filename,單引號內的n是一個數字,表示幾行。-n選項的作用就是只顯示我們要打印的行,無關緊要的內容不顯示。 創建一個sed目錄,把

匹配替換字符串並標註

執行 src 正則 bubuko 匹配 替換字符串 regexp exp http 全局,匹配內容自定義(變量),對結果標註關鍵字 執行結果: 其中var reg=new RegExp(text,‘g‘) text為變量,此參數可接受字符串或者變量,g為

表示式驗證url、時間、ip

//驗證url   function IsURL(str_url){                 var strRegex = "^((https|http|ft

java用表示式判斷一個字串是否是車牌號

public boolean checkCarNumber(String content) { String pattern = "([京津滬渝冀豫雲遼黑湘皖魯新蘇浙贛鄂桂甘晉蒙陝吉閩貴粵青藏川寧瓊]{1}(([A-HJ-Z]{1}[A-HJ-NP-Z0-9]{5})|([A-HJ-

織夢批量替換文章內容內鏈變成絕對路徑

絕對路徑的跳過,相對路徑的替換 替換之前 <p><strong><a href="/html/1.html">HTML</a>文件是由<a href="http://www.dedehtml.com/html/2.html">HTML<

python 表示式找出字串中的純數字

1、簡單的做法 >>> import re >>> re.findall(r'\d+', 'hello 42 I'm a 32 string 30') ['42', '32', '30'] 然而,這種做法使得字串中非純數字也會識別 >

劍指Offer 52. 表示式匹配 (字串

題目描述 請實現一個函式用來匹配包括'.'和'*'的正則表示式。模式中的字元'.'表示任意一個字元,而'*'表示它前面的字元可以出現任意次(包含0次)。 在本題中,匹配是指字串的所有字元匹配整個模式。例如,字串"aaa"與模式"a.a"和"ab*ac*a"匹配,但是與"aa.a"和"ab*a"均不匹配 題目地

個人筆記004--去蘋果手機字串空格

今天有使用者反應蘋果手機複製過來的手機號碼(中間兩頭帶空格那種),後面經過測試才發現是蘋果手機複製過來的空格是不一樣的(有興趣的小夥伴可以自己去試試),用replace(/\s/ig,'')是去不掉的。查了資料再請教大神才發現要這樣子處理: this.emailT = this.emailT.r