一、網址清洗任務
網址中包含垃圾字符,比如ht%$tp:%$$%##%/ / w%##%w%w.%%$$%##%16%$$3.c##om
,包含的垃圾字符有空格、%、$與#,需要清洗掉,變成規範的網址:http://www.163.com
。
二、涉及知識點
1、String.replace()方法
2、String.replaceAll()方法
3、StringBuffer或StringBuilder
4、String.charAt()方法
5、String.contains()方法
6、Arrays.asList()方法
7、ArrayList.forEach()方法
8、正則表達式
大家可以參看博文《正則表達式入門》
完成本次任務,需要用到第4個規範[abc]
——表示字符a
或b
或c
。
三、完成清洗任務
- 創建Java項目CleanURL
- 在src裏創建包net.hw.clean
方法一、採用循環結構過濾垃圾字符
- 創建CleanURL01
package net.hw.clean;
/**
* 功能:清洗網址
* 作者:華衛
* 日期:2020年06月14日
*/
public class CleanURL01 {
public static void main(String[] args) {
String url = " ht%$tp:%$$%##%/ / w%##%w%w.%%$$%##%16%$$3.c##om ";
System.out.println("清洗前的url:" + url);
String delChars = " %$#"; // 垃圾字符構成的待刪字符串
StringBuffer sb = new StringBuffer();
for (int i = 0; i < url.length(); i++) {
// 將網址字符串中不在待刪字符串裏的字符添加到字符串緩衝區對象
if (!delChars.contains(String.valueOf(url.charAt(i)))) {
sb.append(url.charAt(i));
}
}
System.out.println("清洗後的url:" + sb.toString());
}
}
- 運行程序,查看結果
方法二、採用字符串類的replace()方法
- 創建CleanURL02
package net.hw.clean;
/**
* 功能:清洗網址
* 作者:華衛
* 日期:2020年06月14日
*/
public class CleanURL02 {
public static void main(String[] args) {
String url = " ht%$tp:%$$%##%/ / w%##%w%w.%%$$%##%16%$$3.c##om ";
System.out.println("清洗前的url:" + url);
url = url.replace(" ", "");
url = url.replace("$", "");
url = url.replace("%", "");
url = url.replace("#", "");
System.out.println("清洗後的url:" + url);
}
}
- 運行程序,查看結果
- 採用循環結構,優化程序
package net.hw.clean;
/**
* 功能:清洗網址
* 作者:華衛
* 日期:2020年06月14日
*/
public class CleanURL02 {
public static void main(String[] args) {
String url = " ht%$tp:%$$%##%/ / w%##%w%w.%%$$%##%16%$$3.c##om ";
System.out.println("清洗前的url:" + url);
String delChars = " %$#"; // 垃圾字符構成的待刪字符串
for (int i = 0; i < delChars.length(); i++) {
url = url.replaceAll(delChars.charAt(i) + "", "");
}
System.out.println("清洗後的url:" + url);
}
}
- 運行程序,查看結果
方法三、採用字符串類的split()方法
- 創建CleanURL03
package net.hw.clean;
import java.util.Arrays;
/**
* 功能:清洗網址
* 作者:華衛
* 日期:2020年06月14日
*/
public class CleanURL03 {
public static void main(String[] args) {
String url = " ht%$tp:%$$%##%/ / w%##%w%w.%%$$%##%16%$$3.c##om ";
System.out.println("清洗前的url:" + url);
String delChars = " %$#"; // 垃圾字符構成的待刪字符串
System.out.print("清洗後的url:");
Arrays.asList(url.split("[" + delChars + "]")).forEach(System.out::print);
}
}
- 運行程序,查看結果
方法四、採用字符串類的replaceAll()方法
- 創建CleanURL04
package net.hw.clean;
/**
* 功能:清洗網址
* 作者:華衛
* 日期:2020年06月14日
*/
public class CleanURL04 {
public static void main(String[] args) {
String url = " ht%$tp:%$$%##%/ / w%##%w%w.%%$$%##%16%$$3.c##om ";
System.out.println("清洗前的url:" + url);
String delChars= " %$#";
url = url.replaceAll("[" + delChars + "]", "");
System.out.println("清洗後的url:" + url);
}
}
- 運行程序,查看結果
四、創建網址清洗方法
- 創建CleanURL05
package net.hw.clean;
/**
* 功能:清洗網址
* 作者:華衛
* 日期:2020年06月14日
*/
public class CleanURL05 {
/**
* 清洗網址方法
*
* @param url 含有垃圾字符的網址
* @param delChars 垃圾字符構成的字符串
* @return 清洗後的網址
*/
public static String cleanURL(String url, String delChars) {
return url.replaceAll("[" + delChars + "]", "");
}
public static void main(String[] args) {
String url = " ht%$tp:%$$%##%/ / w%##%w%w.%%$$%##%16%$$3.c##om ";
System.out.println("清洗前的url:" + url);
String delChars= " %$#";
url = cleanURL(url, delChars);
System.out.println("清洗後的url:" + url);
}
}
- 運行程序,查看結果
五、清洗包含垃圾字符網址的文件
1、創建包含垃圾字符網址的文件
- 在項目根目錄創建網址文件urls.txt
ht%$tp:%$$%##%/ / w%##%w%w.%%$$%##%16%$$3.c##om
h%%%t###tp%%%s:/%%%%/ww$$$$w.ba$$$$$id####u.c$$$o%%%m###
%h$$$$$tt$$###p%%s:/####/w%%%%ww.l###zy.%%%%ed###u.c$$$n##
####htt%%%%%ps:/######/w w%%%%%w.go#####ogl%%%%e.c####om
2、創建CleanURL06
package net.hw.clean;
import java.io.BufferedReader;
import java.io.FileReader;
/**
* 功能:清洗網址
* 作者:華衛
* 日期:2020年06月14日
*/
public class CleanURL06 {
/**
* 清洗網址方法
*
* @param url 含有垃圾字符的網址
* @param delChars 垃圾字符構成的字符串
* @return 清洗後的網址
*/
public static String cleanURL(String url, String delChars) {
return url.replaceAll("[" + delChars + "]", "");
}
public static void main(String[] args) throws Exception {
// 創建緩衝字符輸入流
BufferedReader br = new BufferedReader(new FileReader("urls.txt"));
// 定義行變量
String nextLine = "";
// 定義垃圾字符構成的待刪字符串
String delChars = " %$#";
// 讀取文件
while ((nextLine = br.readLine()) != null) {
System.out.println(cleanURL(nextLine, delChars));
}
}
}
- 運行程序,查看結果
- 如果要將清洗後的網址存入一個新文件,比如
cleaned_urls.txt
,那麼該如何修改程序?這個簡單的任務,就留給同學們自行完成。