Java或Eclipse'空白'在空白空间(?)
经过许多其他用户提出的问题后,这是我第一次遇到无法找到合适答案的问题。Java或Eclipse'空白'在空白空间(?)
但是,这个问题听起来很奇怪,实际上是: 我有不止一种情况,其中空白是问题的一部分,常见的解决方案是在stackoverflow或其他地方找不到帮助我。
首先我想分割一个字符串在空格上。应该像
String[] str = input.split(" ")
但无论(" ")
也没有任何的正则表达式像("\\s+")
为我工作。根本不是一个问题。我只是选择了一个不同的角色来分裂。 :)
现在我试图通过删除所有空格来清理字符串。找到共同的解决办法是
String str = input.replaceAll(" ", "")
我试图再次,也(" *", "")
使用正则表达式来防止异常,如果字符串inludes没有空格。再次,这些都没有为我工作。
现在我问自己在Java/Eclipse平台上这是否是一个奇怪的问题,或者我做了一些基本错误的事情。从技术上讲,我不这么认为,因为上面的所有代码都可以很好地与任何其他角色进行拆分/清理。
希望能让自己明白。
问候的Drebin
编辑,以使其更清晰:
我关心只是对“代替”现在。
我的代码不会接受通过这些由分号分隔的逗号和系列分隔值和名称的组合,例如:
1,ABC; 2,DEF; 3,GHI
这得到两次分开,首先用逗号分隔,然后用分号分开。工作正常。
现在我想清除这样的输入,通过删除所有的空格进行,如上所述。因此,如前所述,我使用String.replaceAll(" ", "")
,但它不起作用。相反,FIRST空白后的字符串中的所有内容,无论它在哪里,都会被删除并丢失。例如。从上面的字符串将更改为
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
方法。
呃* facepalm * 这解决了这两个问题。那么,是的,我是一个初学者,所以没关系,非常感谢你:) 从来没有机会拆分或清理空白,因为从来没有在我的输入。现在我懂了。 –
@FrankDrebin这就是为什么你需要发布样本输入和期望输出[mcve]。问题不在正则表达式中,因为我们可以在最后一次编辑之后告诉它们。 – user1803551
@ user1803551 Thx,会记住将来的问题。现在我知道我的第一个不够清楚了。 –
(我喜欢这个名字,官员Drebin :))。因为'*'匹配0个匹配项,'+'匹配1个或多个匹配项,所以我使用'“+”',但绝对最好的是'“\\ s +” ' – ppeterka
当您尝试删除空格时,我认为最简单的方法是在字符串上使用trim(),该字符串从前导和结尾中删除空白字符。对于代码工作的所有空间:'input = input.replaceAll(“\\ s”,“”); ' – kolboc
@kolboc只能从字符串的开头和结尾... OP似乎也需要在中间做那个... – ppeterka