欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android開發(fā)必備技巧之高效字符串篩選

 更新時間:2023年06月29日 09:05:56   作者:ObliviateOnline  
在開發(fā)過程中或多或少都要使用一些方法去篩選符合我們要求的字符串,所以下面我們就來介紹一些在開發(fā)工作中常用到的字符串篩選方法,讓大家都能掌握高效的字符串篩選技巧吧

前言

開發(fā)了這么久,每次接H5頁面對api請求時都會遇到一個常見的問題,那就是對JSON字符串的處理和傳相關參數時候對字符串的篩選處理,這些都是為了保證符合請求API的要求。

當然,對字符串進行處理遠遠不止這個地方需要,在開發(fā)過程中或多或少都要使用一些方法去篩選符合我們要求的字符串,畢竟這是一個作為開發(fā)中最常用到的基本類型嘛,可為了處理它們我們總不能每次寫到字符串都要重新去編一個新的方法來處理(如果簡單的也不是不行)?

這時候我們就需要整理出一個工具類用來專門存放我們的字符串篩選的工具方法,以后使用的時候我們直接拿著調用就行,更加方便快捷,所以下面我們就來介紹一些在開發(fā)工作中常用到的字符串篩選方法,讓大家都能掌握高效的字符串篩選技巧。

正篇

其實處理字符串的方法五花八門,但還有很多是通用的,所以我們整理出這些通用性質的方法,以達到隨用隨取的目的。

這里先附上這個文件的地址(MyTest/app/src/main/java/com/example/mytest/RegularUtil.java at main · ObliviateOnline/MyTest · GitHub),有需要可以先看看,下面來介紹一下具體里面包含了哪些。

正則匹配判斷

public static boolean isMatch(String param, String pattern) {
    return param != null && pattern != null && Pattern.compile(pattern).matcher(param).matches();
}

isMatch()方法是一個返回值為boolean類型的函數,首先我們對需要判斷的字符串以及正則模式判空,然后使用Pattern對象的compile()方法設置要匹配的正則表達式,后面再接著調用matcher()方法將要匹配的字符串輸入匹配,最后再使用 matches() 方法檢查字符串是否與該模式匹配。

這個方法是可以用來去驗證密碼、郵箱地址、URL等,在開發(fā)中還是蠻重要的。

判斷特殊字符

這里也是使用正則表達式來篩選的,下面列兩種使用場景:

  • 字符串是否全是數字
  • 字符串是否為手機號碼

代碼如下:

public static boolean isNumber(String param) {
    return param != null && Pattern.compile("[0-9]+").matcher(param).matches();
}
public static boolean isPhone(String param) {
    return param != null && Pattern.compile("^[1][0-9]{10}$").matcher(param).matches();
}

這里還是使用Pattern去判斷的,和第一個方法沒有太多差別,不再贅述。

分割字符串

我們有時候還需要去在一串很長的字符串中分離我們想要的小字符串,比如分離以大寫字母開頭的單詞,下面代碼就是這個作用:

public static List<String> splitWithUpcase(String param) {
    List<String> array = new ArrayList<>();
    if (param == null || param.isEmpty()) {
        return array;
    }
    Pattern pattern = Pattern.compile("[A-Z]{1}[a-z0-9]*");
    Matcher matcher = pattern.matcher(param);
    while (matcher.find()) {
        array.add(matcher.group());
    }
    return array;
}

我們通過這個方法可以獲得一個分離好的以大寫字母開頭的單詞數組,我們因為不是去判斷,而是要獲取其中符合的單詞,所以使用了matcher.find()方法作為條件判斷檢索,再使用matcher.group()方法去拿到符合條件的單詞字符串,最后將他們統(tǒng)一放入我們的List數組里。

判斷是否含有表情包

現在很多輸入法自帶輸入表情符號的功能,所以在一些不能有這些表情包輸入的輸入欄中就需要這種方法:

public static boolean isContainEmoji(String account) {
    int len = account.length();
    boolean isEmoji = false;
    for (int i = 0; i < len; i++) {
        char hs = account.charAt(i);
        if (0xd800 <= hs && hs <= 0xdbff) {
            if (account.length() > 1) {
                char ls = account.charAt(i+1);
                int uc = ((hs - 0xd800) * 0x400) + (ls - 0xdc00) + 0x10000;
                if (0x1d000 <= uc && uc <= 0x1f77f) {
                    return true;
                }
            }
        } else {
            // non surrogate
            if (0x2100 <= hs && hs <= 0x27ff && hs != 0x263b) {
                return true;
            } else if (0x2B05 <= hs && hs <= 0x2b07) {
                return true;
            } else if (0x2934 <= hs && hs <= 0x2935) {
                return true;
            } else if (0x3297 <= hs && hs <= 0x3299) {
                return true;
            } else if (hs == 0xa9 || hs == 0xae || hs == 0x303d || hs == 0x3030 || hs == 0x2b55 || hs == 0x2b1c || hs == 0x2b1b || hs == 0x2b50|| hs == 0x231a ) {
                return true;
            }
            if (!isEmoji && account.length() > 1 && i < account.length() -1) {
                char ls = account.charAt(i+1);
                if (ls == 0x20e3) {
                    return true;
                }
            }
        }
    }
    return  isEmoji;
}

這里我們做的就和之前的不一樣了,我們不再使用正則表達式匹配,而是根據下面這一資料來的: 在Java中,表情符號通常是由一對Unicode編碼表示的,這被稱為"代理對"(surrogate pair),其中高代理項(high surrogate)的范圍是0xd800到0xdbff,低代理項(low surrogate)的范圍是0xdc00到0xdfff。
我們根據這一點,使用了一些特殊的Unicode字符編碼范圍來判斷字符串中是否包含表情符號,當然這估計也不夠全面,比如后面表情符號又增加了之類的,但確實是可以判斷大多數情況的,上面的代碼就是用來判斷字符串中是否含有表情符號。

結語

當然,我們字符串的篩選還有更多的方法,這里不再多說,我將其中一些已經放入了我的RegularUtil類里,如果想了解更多可以去查詢一些相關資料或者自己再寫一些,也希望掘友們也分享一下自己用到的,多多交流!

到此這篇關于Android開發(fā)必備技巧之高效字符串篩選的文章就介紹到這了,更多相關Android字符串篩選內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論