杰瑞科技汇

Java字符串如何转为字符串数组?

按特定分隔符分割字符串(最常见)

这是最普遍的需求,比如将 "apple,banana,orange" 分割成 ["apple", "banana", "orange"]

Java字符串如何转为字符串数组?-图1
(图片来源网络,侵删)

方法:使用 String.split()

String 类的 split(String regex) 方法可以根据给定的正则表达式将字符串拆分为一个字符串数组。

语法:

public String[] split(String regex)

注意: regex 参数是正则表达式,而不仅仅是普通字符串,如果分隔符是正则表达式中的特殊字符(如 ^ \ [ ] ),你需要对其进行转义(在前面加 \),或者在 Java 中使用 \\ 来表示一个 \


示例 1:使用逗号作为分隔符

这是最简单的例子,逗号 在正则表达式里不是特殊字符,所以直接使用即可。

Java字符串如何转为字符串数组?-图2
(图片来源网络,侵删)
public class StringToArrayExample {
    public static void main(String[] args) {
        String str = "apple,banana,orange,grape";
        String delimiter = ","; // 分隔符
        // 使用 split 方法分割字符串
        String[] strArray = str.split(delimiter);
        // 打印结果
        System.out.println("原始字符串: " + str);
        System.out.println("分割后的数组:");
        for (String fruit : strArray) {
            System.out.println(fruit);
        }
    }
}

输出:

原始字符串: apple,banana,orange,grape
分割后的数组:
apple
banana
orange
grape

示例 2:使用句点()作为分隔符(需要转义)

句点 在正则表达式里表示“任意字符”,所以必须使用 \\. 来进行转义。

public class StringToArrayExample {
    public static void main(String[] args) {
        String str = "www.example.com";
        String delimiter = "\\."; // 必须对 . 进行转义
        String[] strArray = str.split(delimiter);
        System.out.println("原始字符串: " + str);
        System.out.println("分割后的数组:");
        for (String part : strArray) {
            System.out.println(part);
        }
    }
}

输出:

原始字符串: www.example.com
分割后的数组:
www
example
com

示例 3:使用竖线()作为分隔符(需要转义)

竖线 在正则表达式里表示“或”,所以也必须转义。

Java字符串如何转为字符串数组?-图3
(图片来源网络,侵删)
public class StringToArrayExample {
    public static void main(String[] args) {
        String str = "apple|banana|orange";
        String delimiter = "\\|"; // 必须对 | 进行转义
        String[] strArray = str.split(delimiter);
        System.out.println("原始字符串: " + str);
        System.out.println("分割后的数组:");
        for (String fruit : strArray) {
            System.out.println(fruit);
        }
    }
}

输出:

原始字符串: apple|banana|orange
分割后的数组:
apple
banana
orange

示例 4:处理多个连续的分隔符

默认情况下,split() 方法会认为多个连续的分隔符之间有一个空的字符串,如果你希望忽略这些空字符串,可以使用 split() 的重载方法 split(String regex, int limit),并将 limit 设为负数。

public class StringToArrayExample {
    public static void main(String[] args) {
        String str = "apple,,banana,,,orange";
        String delimiter = ",";
        // 不处理连续分隔符,会包含空字符串
        String[] strArrayWithEmpty = str.split(delimiter);
        System.out.println("不处理连续分隔符:");
        for (String s : strArrayWithEmpty) {
            System.out.println("[" + s + "]"); // 用 [] 括起来方便看空字符串
        }
        System.out.println("--------------------");
        // 处理连续分隔符,忽略空字符串
        // limit 参数为负数表示尽可能多地分割,并忽略尾部的空字符串
        String[] strArrayWithoutEmpty = str.split(delimiter, -1);
        // 对于忽略中间的空字符串,更简单的方法是使用正则表达式中的 +
        String[] strArrayClean = str.split(delimiter + "+"); // + 表示一个或多个
        System.out.println("使用 split(',+') 处理连续分隔符:");
        for (String s : strArrayClean) {
            System.out.println("[" + s + "]");
        }
    }
}

输出:

不处理连续分隔符:
[apple]
[]
[banana]
[]
[]
[orange]
--------------------
使用 split(',+') 处理连续分隔符:
[apple]
[banana]
[orange]

将字符串的每个字符都作为数组的一个元素

如果你想把 "hello" 变成 ["h", "e", "l", "l", "o"],有几种方法。

方法 1:使用 toCharArray()Arrays.toString() (推荐)

这是最直接、最高效的方法。

import java.util.Arrays;
public class StringToCharArrayExample {
    public static void main(String[] args) {
        String str = "hello world";
        // 1. 将字符串转换为 char 数组
        char[] charArray = str.toCharArray();
        // 2. 如果需要 String 数组,可以遍历 char 数组来创建
        String[] strArray = new String[charArray.length];
        for (int i = 0; i < charArray.length; i++) {
            strArray[i] = String.valueOf(charArray[i]);
        }
        System.out.println("原始字符串: " + str);
        System.out.println("字符数组: " + Arrays.toString(charArray)); // 直接打印 char 数组
        System.out.println("字符串数组: " + Arrays.toString(strArray)); // 打印 String 数组
    }
}

输出:

原始字符串: hello world
字符数组: [h, e, l, l, o,  , w, o, r, l, d]
字符串数组: [h, e, l, l, o,  , w, o, r, l, d]

方法 2:使用 Java 8 Stream API (现代且简洁)

如果你使用的是 Java 8 或更高版本,可以使用 Stream API 来实现,代码非常优雅。

import java.util.Arrays;
public class StringToStreamArrayExample {
    public static void main(String[] args) {
        String str = "hello world";
        // 使用 Stream 将每个字符映射为 String,然后收集到数组中
        String[] strArray = str.chars()           // 获取 IntStream (字符的 ASCII 码)
                               .mapToObj(c -> String.valueOf((char) c)) // 将每个 int 转换为 String
                               .toArray();                            // 收集到数组
        System.out.println("原始字符串: " + str);
        System.out.println("字符串数组: " + Arrays.toString(strArray));
    }
}

输出:

原始字符串: hello world
字符串数组: [h, e, l, l, o,  , w, o, r, l, d]

将整个字符串作为数组的唯一一个元素

这种需求比较少见,但有时你可能需要一个只包含原始字符串的数组。

方法:直接使用花括号 创建

public class StringToSingleElementArray {
    public static void main(String[] args) {
        String str = "This is the whole string";
        // 创建一个只有一个元素的数组
        String[] strArray = new String[]{str};
        // 或者更简洁的写法
        String[] strArray2 = {str};
        System.out.println("原始字符串: " + str);
        System.out.println("单元素数组: " + Arrays.toString(strArray));
        System.out.println("单元素数组2: " + Arrays.toString(strArray2));
    }
}

输出:

原始字符串: This is the whole string
单元素数组: [This is the whole string]
单元素数组2: [This is the whole string]

场景 推荐方法 示例
按分隔符分割 String.split(regex) str.split(",")
每个字符成元素 toCharArray() + 遍历 或 Java 8 Stream str.toCharArray()str.chars().mapToObj(...).toArray()
整个字符串为元素 使用花括号 创建 new String[]{str}

请根据你的具体需求选择最合适的方法,对于绝大多数情况,String.split()

分享:
扫描分享到社交APP
上一篇
下一篇