在其他用户提出许多问题之后,这是我的第一个无法找到合适答案的问题。
然而,这个问题听起来很奇怪,实际上是: 我遇到过不止一种情况,其中空格是问题的一部分,而在 stackoverflow 或其他地方找到的常见解决方案对我没有帮助。
首先我想用空格分割一个字符串。应该是这样的
String[] str = input.split(" ")
但是 ("")
和任何像 ("\\s+")
这样的正则表达式都不适合我。根本不是问题。我只是选择了一个不同的角色来 split 。 :)
现在我正在尝试通过删除所有空格来清理字符串。常见的解决方案是
String str = input.replaceAll(" ", "")
我尝试再次使用正则表达式,并且还使用 ("*", "")
来防止字符串不包含空格时出现异常。同样,这些都不适合我。
现在我问自己这在我的 Java/Eclipse 平台上是否是一个有点奇怪的问题,或者我是否做了一些基本上错误的事情。从技术上讲,我不这么认为,因为上面的所有代码都可以与任何其他要分割/清理的字符一起正常工作。
希望能够让别人理解我自己。
问候德雷宾
编辑以使其更清晰:
我现在只关心“替换”。
我的代码确实接受以逗号分隔的值和名称的组合以及以分号分隔的一系列值和名称,例如:
1,abc;2,def;3,ghi
这会被分成两次,首先是逗号,然后是分号。工作正常。
现在我想通过删除所有空格来清除这样的输入,然后按照上面的说明进行操作。因此,正如已经解释的那样,我使用 String.replaceAll("", "")
,但它不起作用。相反,字符串中第一个空格之后的所有内容,无论它在哪里,都会被删除并丢失。例如。上面的字符串将更改为
1,abc;
如果第一个分号后面有空格。
希望这部分代码适合您:
import java.util.*;
public class Main {
public static void main(String[] args) {
// some info output
Scanner scan = new Scanner(System.in);
String input;
System.out.println("\n wait for input ...");
input = scan.next();
if(input.equals("info"))
{
// special case for information
}
else if(input.equals("end"))
{
scan.close();
System.exit(0);
}
else
{
// here is the problem:
String input2 = input.replaceAll(" ", "");
System.out.println("DEBUG: "+input2);
// further code for cleared Strings
}
}
}
我现在真的不知道如何让它更清楚......
最佳答案
Scanner
的 next
方法返回下一个标记 - 其默认分隔符将是单个单词,而不是完整的行。
如果您想获取完整的行,请使用 nextLine
方法。
关于Java 或 Eclipse 上的空格为 'fails'(?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38932986/