Java 如何根据空格数拆分字符串
我试图用Java中的String.split函数实现这一点,但似乎没有找到一个优雅的解决方案。每个字符或单词之间的空格数是固定的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
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很简单,别忘了点击顶部箭头,谢谢:)