将Java字符串数组转换为列表

3
我有以下字符串,想将它转化为字符串数组。
String singleArray = "[501]"
String multipleArray = "[1,501,634]"

我希望能够从中获取List<String>,问题在于有时它可能是单个值,有时它可能是由逗号分隔的多个值。

我尝试使用Arrays.asList(multipleArray),但它没有起作用。

有什么建议吗?


你尝试过使用String.split吗?小心它需要一个正则表达式作为参数。 - reto
5个回答

9
  1. 获取第一个和最后一个字符之间的子字符串,以去掉[]字符。
  2. 通过,分隔结果字符串。
例如:
String input = "[1,501,634]";
String[] result = input.substring(1, input.length() - 1).split(",");
List<String> asList = Arrays.asList(result);

7

你好

String arr [] = str.replace("[", "").replace ("]", "").split (",");

根据您的知识,您可以使用数组来创建一个列表,如下:

Arrays.asList(arr);

注意

正如Bas.E所指出的那样,我的解决方案适用于与您的示例相同的数据。


String str = "[1, '[501]', 634]"怎么办?原帖从未说明字符串只能是整数,因此您的方法可能会创建无效输出。 - Bassdrop Cumberwubwubwub
2
嗯...答案基于提问中提供的信息,@Bas.E. :) - Konstantin Yovkov
但是我们经常不是用模拟数据来编写问题吗?如果有人将这个答案复制到生产代码中,而系统实际上会将字符串数组作为输入,那该怎么办呢?请记住,除了提问者之外,还有其他人会看到(并使用)这个答案。 - Bassdrop Cumberwubwubwub
1
@Bas.E 谢谢,我已经在我的答案中添加了一条注释。 - Scary Wombat

1
  1. Remove [ and ] from the beginning and ending using substring.
  2. split rest of the string according to the occurrence of ,.

    String[] arr = multipleArray.substring( 
                        1, multipleArray.length()-1).split(",");
    
  3. then use the array to make a list.

    List<String> list=Arrays.asList(arr);
    

请添加一些文字,说明您为什么认为这是一个解决方案。 - Trinimon
我不知道为什么这是必要的,但是我添加了一些解释。@Trinimon - Saif
您的回答被标记为“低质量帖子”,因为长度较短。个人认为,即使解决方案似乎很简单或显而易见,有一些解释也不错。谢谢! - Trinimon
我之前不知道有低质量的问题。非常感谢您,我会尽力解释清楚,再次感谢。@Trinimon - Saif

1

去掉开头和结尾的方括号:

String removedBrackets = multipleArray.replaceAll( "^\\[|\\]$", "" );

或者

String removedBrackets = multipleArray.substring( 1, multipleArray.length() - 1 );

然后按逗号拆分字符串:
String[] arrayOfValues = removedBrackets.split( "," );

然后将其转换为列表:
List<String> listOfValues = Arrays.asList( arrayOfValues );

0

从两侧括号中删除它

array = array.substring(1,array.length()-1);

然后分割并转换为数组

String[] arrayStringArray = array.split(",");

如果需要的话,将其转换为列表

List<String> arrayStringList = Arrays.asList(arrayStringArray);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接