1. 程式人生 > 實用技巧 >Java字串到陣列的轉換--最後放大招

Java字串到陣列的轉換--最後放大招

本文是關於如何在Java中以不同方式將String轉換為String Array的幾種方法,按照慣例,文末會分享Groovy語言中的實現。

split()方法

字串api是通過split()方法新增的,該方法使用分隔符作為輸入,並且字串將根據給定的分隔符進行拆分。最後,它以String []陣列的形式返回每個拆分字串。

在上一篇文章中,我們深入瞭解瞭如何使用帶有不同定界符的split()方法拆分字串。

檢視下面的程式,並將空字串“”傳遞給split()方法。

 
public class FunTester {
 
    public static void main(String[] args) {
        String input = "FunTester";
        String[] split = input.split("");
        output(Arrays.asList(split));
    }
 
}
複製程式碼

控制檯輸出:

INFO-> 當前使用者:fv,IP:10.60.192.21,工作目錄:/Users/fv/Documents/workspace/fun/,系統編碼格式:UTF-8,系統Mac OS X版本:10.15.7
INFO-> 第1個:F
INFO-> 第2個:u
INFO-> 第3個:n
INFO-> 第4個:T
INFO-> 第5個:e
INFO-> 第6個:s
INFO-> 第7個:t
INFO-> 第5個:e
INFO-> 第9個:r

Process finished with exit code 0

複製程式碼

input.split("");

方法將字串"FunTester"分割成到string[]陣列,並將結果儲存在split中。後面是輸出list物件的方法。內容如下:

    public static void output(List list) {
        list.forEach(x -> output("第" + (list.indexOf(x) + 1) + "個:" + x.toString()));
    }

複製程式碼

現在,轉換後的字串陣列長度和原始字串長度應該相同。檢查程式碼:

        output(input.length());
        output(split.length);
複製程式碼

控制檯輸出:

9
9
複製程式碼

正則表示式

接下來,看看使用正則表示式的第二種方法,在很多時候,正則表示式可以簡化我們對字串的驗證,例如:郵箱、手機號等等。

再次需要使用split()方法和正則表示式,如下所示。

public class FunTester {
 
    public static void main(String[] args) {
 
        String input = "FunTester";
        String[] split = input.split("(?!^)");
        output(Arrays.asList(split));
        output(input.length());
        output(split.length);
         
    }
 
}
複製程式碼

控制檯輸出:

INFO-> 當前使用者:fv,IP:10.60.192.21,工作目錄:/Users/fv/Documents/workspace/fun/,系統編碼格式:UTF-8,系統Mac OS X版本:10.15.7
INFO-> 第1個:F
INFO-> 第2個:u
INFO-> 第3個:n
INFO-> 第4個:T
INFO-> 第5個:e
INFO-> 第6個:s
INFO-> 第7個:t
INFO-> 第5個:e
INFO-> 第9個:r
INFO-> 9
INFO-> 9

Process finished with exit code 0

複製程式碼
  • 這裡說明一下,split()方法原始碼中引數定義如下:String regex,再翻一下過載的方法 public String[] split(String regex, int limit)中的原始碼中做了很多判斷之後才會使用正則,不要被引數名regex欺騙了。

Guava

Guava API還內建了對字串陣列轉換的支援。當使用Guava時,這裡涉及許多步驟。

  • 首先使用toCharArray()方法將字串轉換為char[]陣列。
  • Chars.asList()方法將char陣列轉換為List
  • 最後使用List.transform()toArray()方法轉換為String陣列。
  • 的確是非常麻煩的。

這是完整的Demo。

public class FunTester {
 
    public static void main(String[] args) {
 
        String input = "FunTester";
        String[] slist = Lists.transform(Chars.asList(input.toCharArray()), Functions.toStringFunction()).toArray(ArrayUtils.EMPTY_STRING_ARRAY);
        output(Arrays.asList(slist));
        output(input.length());
        output(slist.length);
    }
 
}
複製程式碼

控制檯輸出:

與上面相同,不再重複。
複製程式碼

Groovy

下面有請Groovy出場,程式碼比較簡單,我保留了Java版本的第一行程式碼。

        String input = "FunTester";
        def list = input as List
        output(list)
        output(list.size())
        output(input.length())
複製程式碼
  • 只用了一個as關鍵字就可以了,這裡的as操作符是可以被重寫的。