一、网址清洗任务
网址中包含垃圾字符,比如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
,那么该如何修改程序?这个简单的任务,就留给同学们自行完成。