我已经完全搜索了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)==' $'工作得很好......但如果我想测试它是否以空格开头,然后是美元符号,它就不起作用。
没有错误......没有任何反应。任何准则/修正都将非常感谢!
答案 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) == '$') {
...
}