DollarSigns和StartsWith()java的问题

时间:2013-02-01 05:06:40

标签: java regex startswith

我已经完全搜索了Stackoverflow和Google的所有方面,但没有找到任何帮助我解决问题的方法。

为什么这个代码:

if((w.startsWith("\\$", 0) || (w.startsWith("\\$", 1))){
}

和此:

if((w.charAt(0) == '$') || (w.charAt(1) == '$' && w.charAt(0) == ' ')){
}

和此:

 if((w.startsWith("\\$") || (w.startsWith(" \\$"))){
 }

不起作用?

我试图测试字符串是以美元符号,空格还是美元符号开头,但出于某些奇怪的原因,我似乎无法找到与&#相关的问题34;从空间开始"一部分。

因为charAt(0)==' $'工作得很好......但如果我想测试它是否以空格开头,然后是美元符号,它就不起作用。

没有错误......没有任何反应。任何准则/修正都将非常感谢!

3 个答案:

答案 0 :(得分:1)

没有必要转义$,因为String.startsWith只接受普通字符串作为参数,而不是正则表达式。

if (w.startsWith("$") || w.startsWith(" $"))

就足够了。

如果您使用String.startsWith(String prefix, int offset)(我认为这不是必需的话),请将0作为偏移量,而不是1,因为您必须从头开始检查$。如果您必须测试子字符串是否以前缀开头,则需要它。在这种情况下,请给出substring的beginIndex。

答案 1 :(得分:0)

只需执行两个startsWith表达式而不转义:

if (w.startsWith("$") || w.startsWith(" $")) {...}

答案 2 :(得分:0)

只需trim它。它会删除之前和之后的空格。

if(w.trim().charAt(0) == '$') {
  ...
}