31471


Stringの"[1,2]"という値を、int配列に変換する方法をご教授下さい


CC BY-SA 3.0
2016-12-27T06:49:42.633
31456
2020-07-10T18:53:40.093
7626
question
java
Stringの"[1,2]"という値を、int配列に変換する方法


[JSON](https://ja.wikipedia.org/wiki/JavaScript_Object_Notation)形式の配列とみなせるのでJSONパーサが利用できると思います。

[jackson](https://github.com/FasterXML/jackson-databind)を利用した例:

[code]

    import com.fasterxml.jackson.databind.ObjectMapper;
    
    ...
    
            final String target = "[1,2]";
    
            final ObjectMapper mapper = new ObjectMapper();
            final int[] result = mapper.readValue(target, int[].class);
    
            System.out.println(Arrays.toString(result));
    
[/code]

結果:

[code]

    [1, 2]
    
[/code]

* * *

あるいは、数字列が非数字列で区切られているとみなせるのなら単に

[code]

    final String target = "[1,2]";
    final Pattern p = Pattern.compile("\\D+");
    final int[] result = p.splitAsStream(target)
        .filter(str -> !str.isEmpty())
        .mapToInt(Integer::parseInt).toArray();
    
[/code]

でも良いかと思います。


CC BY-SA 4.0
2016-12-27T07:42:22.373
31461
2020-07-10T18:53:40.093
2020-07-10T18:53:40.093
2808
2808
31456
answer


Java8 の stream を使ってパースしてみました。

[code]

    import java.util.Arrays;
    
    public class stringToIntArray {
      public static void main(String args[]){
        String str = "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]";
    
        int[] arr = Arrays.stream(str.split("[, \\[\\]]"))
          .filter(s -> !s.isEmpty())
          .mapToInt(Integer::parseInt)
          .toArray();
    
        System.out.println(Arrays.toString(arr));
      }
    }
    
    => [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    
[/code]


CC BY-SA 3.0
2016-12-27T09:24:01.090
31471
2016-12-27T09:24:01.090
31456
answer