java - 将字符串子集转换为数组变量的最佳方法是什么?

标签 java arrays string type-conversion integer

我有一个像这样的字符串;

abc 1/2/3 3/4/5 4/5/6 6/7/7 efg 1 2 3 4 ...

我想把它变成;

String[] abc = {1/2/3, 3/4/5, 4/5/6, 6/7/7}
int[] efg = {1, 2, 3, 4}

其中 abc、efg 是未硬编码的变量,而是从字符串中获取的。我的示例代码不起作用,所以我不会将其发布在这里。请让我知道实现此目标的最有效方法是什么。谢谢!

最佳答案

这是工作脚本,非常接近您所说的要求。它生成键名称的映射,其中包含字符串数组的值。我不会努力映射到不同类型的数组,这只会增加复杂性,甚至可能超出了您打算使用此代码执行的操作范围。

Map<String, String[]> map = new HashMap<>();
String input = "abc 1/2/3 3/4/5 4/5/6 6/7/7 efg 1 2 3 4";
String[] exps = input.split("\\s+(?=[A-Za-z]+)");
for (String exp : exps) {
    String[] parts = exp.split("\\s+");
    map.put(parts[0], Arrays.copyOfRange(parts, 1, parts.length));
}

// iterate each name, and then print out each string in a given array
for (Map.Entry<String, String[]> entry : map.entrySet()) {
    for (String val : entry.getValue()) {
        System.out.println(entry.getKey() + ": " + val);
    }
}

abc: 1/2/3
abc: 3/4/5
abc: 4/5/6
abc: 6/7/7
efg: 1
efg: 2
efg: 3
efg: 4

如果您想让 map 更加通用,您可能必须将字符串名称映射到Object。但是,这对我来说并不干净,我宁愿将每个名称映射到相同类型的数组。

例如,要访问名称 efg 的第二个值,您可以使用:

map.get("efg")[1]

关于java - 将字符串子集转换为数组变量的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52980680/

相关文章:

java - 我是否需要防御性复制来构造一个具有*非最终*但不可变字段的不可变类?

Java:导入多个常量的简洁方法

android - 如何将游标对象的数据存储在数组中

添加新值时,Java ArrayList 值将被重置

php 将发布数据更改为变量

javascript - 如何在忽略字符排列的情况下比较JavaScript中的两个字符串

c - 如何向字符数组添加填充和换行符

java - Java 模块化应用程序中的 Logback 不起作用

java - 如何在 BlackBerry 中绘制实心正方形?

java - 在java中,如何将字符串添加到字符串变量?