0

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

为什么这段代码:

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

还有这个:

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

还有这个:

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

不工作?

我正在尝试测试字符串是否以美元符号或空格和美元符号开头,但由于某些奇怪的原因,我似乎无法找到与“以空格开头”部分相关的问题。

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

没有错误......只是没有任何反应。任何指南/修复将不胜感激!

4

3 回答 3

1

无需转义$asString.startsWith只需要一个普通字符串作为参数,而不是正则表达式。

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

就足够了。

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

于 2013-02-01T05:10:35.387 回答
0

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

if (w.startsWith("$") || w.startsWith(" $")) {...}
于 2013-02-01T05:14:03.760 回答
0

只是trim它。它删除前后的空格。

if(w.trim().charAt(0) == '$') {
  ...
}
于 2013-02-01T05:19:01.550 回答