java用正則表達式獲取url的域名


下載代碼

https://raw.githubusercontent.com/sogeisetsu/springstudyy/cab51c745a6baaba9cdd492bfbff3d4df92873f4/sptumvc-07/src/main/java/org/suyuesheng/spring7/util/GetDomainName.java

代碼

package org.suyuesheng.spring7.util;

import org.junit.Test;

import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class GetDomainName {
    private String url;
    private int index;

    /**
     * 獲取網絡的根域名
     * @param url
     * @return
     */
    public static String getDomainName(String url){
        String pattern = "/(?!/)";
        Pattern compile = Pattern.compile(pattern);
        Matcher matcher = compile.matcher(url);
        ArrayList<Integer> list = new ArrayList<>();
        while (matcher.find()){
            list.add(matcher.start());
        }
        return url.substring(0, list.get(1)+1);
    }

    /**
     *根據 index 來返回幾級域名<br/>
     * 如果 index為0,則返回頂級域名,如http://localhost:8080/。<br/>
     * 如果index大於url所包含的最大域名級數就返回url<br/>
     * @param url
     * @param index  域名的級別,0為頂級域名,以此類推。
     * @return
     */
    public static String getDomainName(String url,int index){
        String pattern = "/(?!/)";
        Pattern compile = Pattern.compile(pattern);
        Matcher matcher = compile.matcher(url);
        ArrayList<Integer> list = new ArrayList<>();
        while (matcher.find()){
            list.add(matcher.start());
        }
		
        try{
			//如果index大於url所包含的最大域名級數就返回url
			//這里面list的size減一就是這個url的最大級數,因為list包含一個/是url中http://的/。所以不應該算數
            if(index>=list.size()-1){
                return url;
            }else if (index<0){
                return null;
            }else {
                return url.substring(0, list.get(index+1)+1);
            }
        }catch (Exception e){
            e.printStackTrace();
            return null;
        }
    }
    @Test
    public void testDomain(){
        System.out.println(GetDomainName.getDomainName("http://localhost:8080/test/session"));//http://localhost:8080/
        System.out.println(GetDomainName.getDomainName("http://localhost:8080/test/session/", 3)); //http://localhost:8080/test/session/
    }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM