如何将字符串转换为字符串数组?

时间:2015-06-03 16:18:45

标签: java arrays string readfile

我正在使用扫描仪从文件中读取,文本包含以下内容。

[8,3,8,2,3,4,4,4,5,8]

这最初是一个整数数组,我必须将其转换为String才能在文件中写入。现在,我需要能够将文件读回java,但我需要能够将各个数字一起添加,因此我需要将此String重新放入数组中。有帮助吗?这就是我所拥有的:

File f = new File("testfile.txt");  
try{
    FileWriter fw = new FileWriter(f); 
    fw.write(Arrays.toString(array1)); 
    fw.close(); 
} catch(Exception ex){
    //Exception Ignored
}

Scanner file = new Scanner(f);       
System.out.println(file.nextLine());

这将打印出数字列表,但是以字符串形式显示。我需要访问数组中的整数才能添加它们。这是我第一次发帖,如果我搞砸了,请告诉我。

3 个答案:

答案 0 :(得分:4)

您可以使用String#substring删除方括号,String#splitString拆分为数组,String#trim删除空格,Integer#parseIntString转换为int值。

在Java 8中,您可以使用Stream API:

int[] values = Arrays.stream(string.substring(1, string.length() - 1)
                     .split(","))
                     .mapToInt(string -> Integer.parseInt(string.trim()))
                     .toArray();

对于求和,你可以使用IntStream#sum方法,而不是在最后将它转换为数组。

答案 1 :(得分:2)

您不需要在String中阅读Array,只需使用Regex

public static void main(String[] args) throws Exception {
    String data = "[8, 3, 8, 2, 3, 4, 41, 4, 5, 8]";
    // The "\\d+" gets the digits out of the String
    Matcher matcher = Pattern.compile("\\d+").matcher(data);

    int sum = 0;
    while(matcher.find()) {
        sum += Integer.parseInt(matcher.group());
    }

    System.out.println(sum);
}

结果:

  

86

答案 2 :(得分:0)

List<Integer> ints = new ArrayList<>();
String original = "[8, 3, 8, 2, 3, 4, 4, 4, 5, 8]";
String[] splitted = original.replaceAll("[\\[\\] ]", "").split(",");
for(String s : splitted) {
    ints.add(Integer.valueOf(s));
}