有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何根据空格数拆分字符串

我正在尝试使用字符串来实现这一点。Java中的拆分函数,但似乎没有找到一个优雅的解决方案。每个字符或单词之间的空格数是固定的

String original = "H  E  L  L  O    W  O  R  L  D"

String finalWord = original.split();

System.out.println(finalWord);

HELLO WORLD 

基本上,每个字母表之间的空格数是固定的,例如2,单词之间的空格数也是固定的,例如4

如何使用Java实现这一点

H(空间)(空间)E(空间)(空间)L(空间)(空间)O(空间)(空间)(空间)W(空间)(空间)O(空间)(空间)R(空间)(空间)L(空间)(空间)D

进入

你好(太空)世界

希望这是可以理解的


共 (6) 个答案

  1. # 1 楼答案

    original.replaceAll("\\s{4,}", " ").replaceAll("\\s{2,}", "").trim()
    

    第一个将用空格替换4+空格,第二个将用无空格替换2+空格

  2. # 2 楼答案

    因此,您无需拆分它,只需将2个空格替换为1个空格,即可获得HELLO(space)WORLD:

    String original = "H  E  L  L  O     W  O  R  L  D";
    String a = original.replaceAll("  ", "");
    System.out.println(a);
    
  3. # 3 楼答案

    可以将正则表达式传递给拆分分隔符,以便在两个或三个空格上拆分,从而使四个空格保持不变:

    String input = "H  E  L  L  O    W  O  R  L  D";
    
    String[] parts = input.split("\\W{2,3}"); // [H, E, L, L, O, , W, O, R, L, D]
    System.out.println(String.join("", parts)); // HELLO WORLD
    
  4. # 4 楼答案

    你可以试试

    public static void main(String[] args) throws IOException {
        //BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        //String line =reader.readLine();
        String line = "H  E  L  L  O    W  O  R  L  D";
        String finalString;
    
        finalString = line.replaceAll("  ", "");
        finalString = finalString.replaceAll("    ", " ");
        System.out.println(finalString);
    
    }
    
  5. # 5 楼答案

    如果这不是一个家庭作业,您可以用Java8来尝试

    String original = "H  E  L  L  O    W  O  R  L  D";
    String str = Stream.of(original.split("\\s{4}"))
                       .map(x-> x.replaceAll("\\s{2}", ""))
                       .collect(Collectors.joining(" "));
    System.out.println(str);
    
  6. # 6 楼答案

    将4个空格替换为1个空格,然后将2个空格替换为零: http://rextester.com/LURGM31649

    String original = "H  E  L  L  O    W  O  R  L  D";
    original.replaceAll("    ", " ").replaceAll("  ", "");