将字符串转换为列表
答
一个巧妙的办法来做到这一点是
String s = "[1,2,3]"
s=s.sbustring(1,s.length-1);
List<Long> numLongs = new ArrayList<Long>();
for(String eachString: s.split(",")){
try {
numLongs.add(Long.parseLong(eachString))
} catch (NumberFormatException e){
System.out.println("failed to convert : "+s);
}
}
答
因为这是一个数组的JSON表示,你可以使用任何JSON API。
例如使用Jackson:
String s = "[1,2,3]";
long[] a = new ObjectMapper().reader(long[].class).readValue(s);
List<Long> l = new ObjectMapper().reader(List.class).readValue(s);
答
怎么样?
String x = "[1,2,3]";
List<Long> myList = new ArrayList<>();
for(String s : x.substring(1,x.length()-1).split(",")) {
myList.add(Long.valueOf(s));
}
或
String x = "[1,2,3]";
List<Long> myList = new ArrayList<>();
for(String s : x.replaceAll("\\[|\\]","").split(",")) {
myList.add(Long.valueOf(s));
}
答
这样做:
public static void main(String[] args) {
String str= "[1,2,3]";
String []arr=str.substring(1, str.length()-1).split(",");
List<Long>list=new ArrayList<Long>();
for(int i=0;i<arr.length;i++){
list.add(Long.parseLong(arr[i]));
}
System.out.println(list);
}
答
在Java 8
String str = "1,2,3";
String[] sp = str.split(",");
List<String> listSt = Arrays.asList(sp);
listSt.forEach(System.out::print);
List<Long> listLong = listSt.stream().map(str1 -> Long.parseLong(str1)).collect(Collectors.toList());
listLong.forEach(System.out::print);
+2
使用'asList'并不是真的必要; 'Arrays'有自己的静态'stream()'方法,即'Arrays.stream(sp).map ...' – ajb 2014-10-01 20:11:06
你的字符串是有效的JSON,你可以使用杰克逊的ObjectMapper做到这一点,但看起来好像过度杀人 – Leon 2014-10-01 19:45:38
什么方法h你试过了吗?你认为“很多”步骤是什么? – azurefrog 2014-10-01 19:46:30
欢迎来到SO。请阅读本[指南](http://*.com/help/mcve)。你需要解析这个字符串。 – 2014-10-01 19:47:15