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,那麼該如何修改程序?這個簡單的任務,就留給同學們自行完成。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章