Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何根据空格数拆分字符串_Java_String_Split_Delimiter - Fatal编程技术网

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

Java 如何根据空格数拆分字符串,java,string,split,delimiter,Java,String,Split,Delimiter,我试图用Java中的String.split函数实现这一点,但似乎没有找到一个优雅的解决方案。每个字符或单词之间的空格数是固定的 String original = "H E L L O W O R L D" String finalWord = original.split(); System.out.println(finalWord); HELLO WORLD 基本上,每个字母表之间的空格数是固定的,例如2,单词之间的空格数也是固定的,例如4 如何使用Jav

我试图用Java中的String.split函数实现这一点,但似乎没有找到一个优雅的解决方案。每个字符或单词之间的空格数是固定的

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

进入

你好(太空)世界


希望这是可以理解的

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

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

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

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个空格替换为1个空格,然后将2个空格替换为零:


将4个空格替换为1个空格,然后将2个空格替换为零:


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


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

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

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

你可以试试

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);

}
你可以试试

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);

}

如果这不是一个家庭作业,您可以用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);

如果这不是一个家庭作业,您可以用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);


首先,将
4个空格
替换为
单个空格
。然后将
2个空格
替换为
空格
。发布未编译的示例代码(即“final”不能是变量名,
split
需要参数等)表明您没有自己太努力地找到解决方案。所有输入的空格数是否固定,或者它是系统的可变参数之一?使用字符串在HELLO和WOLDIs之间有5个空格。拆分“部分要求”?首先,将
4个空格替换为
single space
。然后将
2个空格
替换为
空格
。发布未编译的示例代码(即“final”不能是变量名,
split
需要参数等)表明您没有自己太努力地找到解决方案。所有输入的空格数是否固定,或者它是系统的可变参数之一?在HELLO和WOLDIs之间有5个空格“使用字符串.split”作为需求的一部分?@baao这不一定是Javascript。它可能非常棒;-)这段代码现在有一个问题和一个缺陷。问题:您不关心
replaceAll
结果(即未分配给任何对象)。缺陷:使用
replaceAll
而不是
replace
@baao没有任何意义,因为这不一定是Javascript。它可能非常棒;-)这段代码现在有一个问题和一个缺陷。问题:您不关心
replaceAll
结果(即未分配给任何对象)。缺陷:使用
replaceAll
代替
replace
没有任何意义。您在
原件中放置了5个空格,而不是4个空格。如果你按照OP的要求使用4个空格,你会得到“HELLOWORLD”。@DodgyCodeException很好,像这样的东西会导致航天飞机坠毁。根据实际需要进行了调整。您在
原件中放置了5个空格,而不是4个。如果你按照OP的要求使用4个空格,你会得到“HELLOWORLD”。@DodgyCodeException很好,像这样的东西会导致航天飞机坠毁。适应实际需求。它到底是如何工作的?我原以为它不会输出空格,但令人惊讶的是它显示了正确的结果。这只是因为OP在他们的问题中包含了五个空格,每个人都直接从那里复制粘贴了代码。哦,对不起,它的2个空格和4个空格,我已经做了必要的调整。是的,第一个字符串在HELLO和WORLD之间有5个空格,所以我的解决方案可以很好地工作,但是现在,单词之间有4个空格,我认为更好的解决方案是@ajcHow,它完全可以工作吗?我原以为它不会输出空格,但令人惊讶的是它显示了正确的结果。这只是因为OP在他们的问题中包含了五个空格,每个人都直接从那里复制粘贴了代码。哦,对不起,它的2个空格和4个空格,我已经做了必要的调整。是的,第一个字符串在HELLO和WORLD之间有5个空格,所以我的解决方案很好,但是现在,单词之间有4个空格,我认为更好的解决方案是@ajc@cmy113很简单,别忘了点击顶部箭头,谢谢:)@cmy113很简单,别忘了点击顶部箭头,谢谢:)