【问题标题】:How can I conver this string into a java list?如何将此字符串转换为 java 列表?
【发布时间】:2014-07-19 05:14:57
【问题描述】:

如何将此字符串转换为包含三个元素的 java 列表 (java.util.List)?

{Electronic,Pop,Rock}

我已经在使用 Google Guava,所以这将是一个很好的解决方案,但我看不到一个

【问题讨论】:

  • 看看java.util.Arrays
  • 到目前为止你累了什么?你看过code.google.com/p/guava-libraries/wiki/StringsExplained吗?
  • 我不知道为什么人们认为这太宽泛了,因为答案是一小段代码。这个问题根本不清楚。这里的问题是 OP 没有尝试任何方法来解决它(或者至少 OP 没有表现出他/她的努力)。
  • {Electronic,Pop,Rock} 是一个字符串数组还是一个长字符串...?
  • 它是一个长字符串。我确实尝试过 Arrays.asList() 但这没有用我只是想更好地保持问题简洁

标签: java list guava


【解决方案1】:
List<String> result = Splitter.on(CharMatcher.anyOf("{,}"))
                              .trimResults()
                              .omitEmptyStrings()
                              .splitToList();

相关文档:http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/base/Splitter.html

【讨论】:

  • 这感觉很hacky。您将大括号视为分隔符,尽管它们不是。我建议Splitter.on(',').splitToList(s.substring(1, s.length - 1))。当然,它远非完美。
【解决方案2】:

您的 List 将是字符串类型,所以 --> List 或者您可以使用 ArrayList 对象。

请参阅this 问题以获取指示。

String tunes = "Electronic,Pop,Rock";
String[] splits = tunes.split(",");

List<String> wordList = Arrays.asList(splits);  

【讨论】:

  • 但它是一个字符串,我从一个包含该文本而不是文字的字符串开始,我不能将 String[] 拆分分配给一个字符串;
  • @PaulTaylor,这应该可以带你去你需要去的地方
  • 也有 {},但还是谢谢 _ 我一直在寻找将输入识别为列表的解决方案 _ 我想我会坚持使用 guava 选项
【解决方案3】:

如下所示创建一个数组。

     String sourceString = "{Electronic,Pop,Rock}";

   // it will remove curly braces
sourceString = sourceString.substring(1,sourceString.length()-1); 
    String[] arr = sourceString.split(",");

但是,您可以使用 Array 代替 List,但如果确实需要制作列表,请添加以下行。

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

【讨论】:

  • 但它是一个字符串,我从一个包含该文本而不是文字的字符串开始,我不能将 String[] 拆分分配给一个字符串; – Paul Taylor 10 秒前
  • @Paul Taylor Eairler 我以为你有逗号分隔的字符串。我已更改代码以将完整视为单个字符串,然后将其分解为多个部分以创建字符串列表。逗号 ',' 用作分隔符。
猜你喜欢
  • 2021-11-18
  • 1970-01-01
  • 2013-12-22
  • 2021-07-28
  • 1970-01-01
  • 2011-02-08
  • 2020-10-10
  • 2021-09-10
  • 2023-01-04
相关资源
最近更新 更多