杰瑞科技汇

Java字符串如何转数组?

  1. 按分隔符分割字符串:这是最常见的需求,将 "apple,banana,orange" 分割成 ["apple", "banana", "orange"]
  2. 将字符串转换为字符数组:将 "hello" 转换成 ['h', 'e', 'l', 'l', 'o']
  3. 将字符串转换为字节数组:这在处理二进制数据、文件读写或网络传输时很有用。
  4. 将字符串转换为特定类型的数组:将 "1,2,3,4" 转换成 int[] 数组。

下面我将详细讲解每一种情况,并提供完整的代码示例。

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

按分隔符分割字符串(最常用)

这是最核心的用法,使用 String 类的 split() 方法。

方法签名

public String[] split(String regex)
  • regex:正则表达式,这是关键点!如果你的分隔符是正则表达式中的特殊字符(如 、、、 等),需要进行转义。

示例代码

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

public class StringToArrayExample {
    public static void main(String[] args) {
        String str = "apple,banana,orange,grape";
        // 使用逗号分割字符串
        String[] fruitsArray = str.split(",");
        // 打印结果数组
        System.out.println("分割后的数组:");
        for (String fruit : fruitsArray) {
            System.out.println(fruit);
        }
        // 输出:
        // 分割后的数组:
        // apple
        // banana
        // orange
        // grape
    }
}

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

在正则表达式中表示“任意字符”,所以必须用 \\ 进行转义。

Java字符串如何转数组?-图2
(图片来源网络,侵删)
public class StringToArrayExample {
    public static void main(String[] args) {
        String str = "192.168.1.1";
        // 错误示范:split(".") 会把字符串分割成单个字符的数组
        // String[] parts = str.split("."); 
        // 正确示范:需要对 . 进行转义
        String[] ipParts = str.split("\\.");
        System.out.println("分割后的IP地址数组:");
        for (String part : ipParts) {
            System.out.println(part);
        }
        // 输出:
        // 分割后的IP地址数组:
        // 192
        // 168
        // 1
        // 1
    }
}

示例 3:限制分割次数

split() 方法还有一个重载版本,可以指定分割的次数。

public class StringToArrayExample {
    public static void main(String[] args) {
        String str = "a,b,c,d,e";
        // 只分割前两次
        String[] parts = str.split(",", 2); // limit = 2
        System.out.println("分割后的数组 (限制次数):");
        for (String part : parts) {
            System.out.println(part);
        }
        // 输出:
        // 分割后的数组 (限制次数):
        // a
        // b,c,d,e
    }
}

将字符串转换为字符数组

这个操作非常直接,使用 String 类的 toCharArray() 方法。

方法签名

public char[] toCharArray()

示例代码

public class StringToCharArrayExample {
    public static void main(String[] args) {
        String str = "Hello World";
        // 转换为字符数组
        char[] charArray = str.toCharArray();
        System.out.println("转换后的字符数组:");
        for (char c : charArray) {
            System.out.print(c + " ");
        }
        // 输出:
        // 转换后的字符数组:
        // H e l l o   W o r l d 
    }
}

将字符串转换为字节数组

这个操作也很常用,尤其是在处理编码、文件I/O时,使用 String 类的 getBytes() 方法。

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

方法签名

public byte[] getBytes()
// 或者指定字符集
public byte[] getBytes(Charset charset)
public byte[] getBytes(String charsetName) throws UnsupportedEncodingException

强烈建议始终指定字符集(如 StandardCharsets.UTF_8),以避免因平台默认编码不同导致的问题。

示例代码

import java.nio.charset.StandardCharsets;
public class StringToByteArrayExample {
    public static void main(String[] args) {
        String str = "你好,Java"; // 包含中文字符
        // 使用 UTF-8 字符集转换为字节数组
        byte[] byteArray = str.getBytes(StandardCharsets.UTF_8);
        System.out.println("转换后的字节数组 (UTF-8):");
        for (byte b : byteArray) {
            System.out.print(b + " ");
        }
        // 输出 (UTF-8编码下):
        // -28 -67 -96 -27 -91 -67 -48 -48 -47 -17 -68 -71 
    }
}

将字符串转换为特定类型的数组(如 int[]

这种情况稍微复杂一些,因为 split() 方法返回的是 String[],你需要先分割,然后再将每个 String 元素转换成目标类型。

示例:将逗号分隔的数字字符串转换为 int[]

import java.util.Arrays;
public class StringToIntArrayExample {
    public static void main(String[] args) {
        String numbersStr = "1,2,3,4,5,10,20";
        // 1. 使用 split() 方法分割字符串
        String[] numberStrings = numbersStr.split(",");
        // 2. 创建一个 int 数组,长度与 String 数组相同
        int[] intArray = new int[numberStrings.length];
        // 3. 遍历 String 数组,并转换每个元素
        for (int i = 0; i < numberStrings.length; i++) {
            // 使用 Integer.parseInt() 将字符串转换为 int
            // 注意:如果字符串不能转换为数字,会抛出 NumberFormatException
            intArray[i] = Integer.parseInt(numberStrings[i].trim()); // trim() 去除可能的空格
        }
        // 打印结果
        System.out.println("转换后的 int 数组: " + Arrays.toString(intArray));
        // 输出:
        // 转换后的 int 数组: [1, 2, 3, 4, 5, 10, 20]
    }
}

使用 Java 8 Stream 的简洁写法:

如果你使用的是 Java 8 或更高版本,可以使用 Stream API 让代码更简洁。

import java.util.Arrays;
import java.util.stream.Collectors;
public class StringToIntArrayStreamExample {
    public static void main(String[] args) {
        String numbersStr = "1, 2, 3, 4, 5, 10, 20";
        // 使用 Stream 进行转换
        int[] intArray = Arrays.stream(numbersStr.split(","))  // 1. 分割成 Stream<String>
                               .map(String::trim)             // 2. 去除每个元素两端的空格
                               .mapToInt(Integer::parseInt)   // 3. 将 String 转换为 int
                               .toArray();                    // 4. 收集为 int 数组
        System.out.println("使用 Stream 转换后的 int 数组: " + Arrays.toString(intArray));
        // 输出:
        // 使用 Stream 转换后的 int 数组: [1, 2, 3, 4, 5, 10, 20]
    }
}
目标类型 核心方法 关键点/示例
字符串数组 (String[]) String.split(String regex) 注意 regex 是正则表达式,特殊字符需转义(如 \\.)。
字符数组 (char[]) String.toCharArray() 直接转换,非常简单。
字节数组 (byte[]) String.getBytes(Charset charset) 强烈建议指定字符集,如 StandardCharsets.UTF_8
特定类型数组 (如 int[]) split() + 循环/Stream + parseInt() 先分割,再遍历转换,Java 8+ 可用 Stream 使代码更优雅。
分享:
扫描分享到社交APP
上一篇
下一篇