Java案例:清洗网址垃圾字符

一、网址清洗任务

网址中包含垃圾字符,比如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]——表示字符abc

三、完成清洗任务

  • 创建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,那么该如何修改程序?这个简单的任务,就留给同学们自行完成。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章