【问题标题】:Split array into subarray java将数组拆分为子数组java
【发布时间】:2018-04-18 15:07:31
【问题描述】:
String s = "How are you?"
String[] a = s.split("\\s");

给一个= [你好吗?]

我还想将数组 a 拆分为子数组 H,o,w

String[] b = a.split(""); // error here

【问题讨论】:

  • a 是数组而不是String,你不能在上面调用split("")
  • 欢迎来到 SO。请至少表明您在帖子中付出了最少的努力。利用编辑功能提高问题的质量
  • 我应该使用哪种方法来拆分数组
  • 您需要在数组a 上使用循环。并拆分该数组的每个元素,例如:a[i].split("").
  • a数组已经拼接好了,使用a[i]访问里面的对象,或者使用foreach遍历所有对象。

标签: java split


【解决方案1】:

这应该可行。如 cmets 中所述。 a 不是字符串而是数组。所以你需要遍历它来调用它包含字符串的split()方法

String s = "How are you?"
String[] a = s.split("\\s");
for(String s2 : a){
    String[] a2 = s2.split("");
    // do your stuff with a2 in every iteration
}

【讨论】:

  • s2.split("") 有效吗?我会改用toCharArray(),但会得到char[]
  • @AxelH 当然可以,但我不确定 OP 中的示例是真实的还是只是示例
  • 请注意,这在旧版本(java 6)中给出了“错误”结果,给出了[,h,o,w],但知道我们确实有[h,o,w]。奇怪......但很好!
  • @AxelH 哦,真的吗?我不知道。很高兴我使用java8 然后
  • 我不得不使用一些“旧”技术……但某些公司仍在使用这种技术……不幸的是。
【解决方案2】:

试试

"How".toCharArray() 获取每个字母或循环遍历

String str = "How";
for (int i = 0;i < str.length(); i++){
    System.out.println(str.charAt(i));
}

【讨论】:

    【解决方案3】:

    您也可以先删除所有空格字符,然后再拆分。

        String s = "How are you?";
        String[] a = s.replaceAll("\\s","").split("");
        System.out.println(Arrays.toString(a));
    
        //[H, o, w, a, r, e, y, o, u, ?]
    

    【讨论】:

      【解决方案4】:

      您可以获取字符流并单独打印每个字符,例如:

      String s = "How are you";
      s.chars()
          .forEach(c -> System.out.println((char)c));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-03
        • 1970-01-01
        • 2011-06-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多