读取网页文本时indexOf整数比较判断异常问题咨询
问题分析与解决
首先明确String.indexOf()的返回规则:
- 找到目标字符串时,返回其第一个字符的索引位置(索引从0开始)
- 未找到时返回
-1
你的代码里用str.indexOf("blue") > 0作为判断条件,理论上只有当"blue"出现在字符串非开头位置时才会进入if块;如果返回-1,-1 > 0是false,绝对不会进入if块。你遇到的问题大概率是以下几种情况之一:
可能的原因
- 大小写不匹配:页面中的目标文本是"Blue"、"BLUE"这类大小写变体,
indexOf是区分大小写的,这时候会返回-1,但可能你误以为没有匹配,实际上代码并没有进入if块?或者你调试时看错了变量值? - 页面存在隐藏的"blue":比如HTML标签的属性(如
class="blue-container")、注释内容里包含"blue",这些内容肉眼看不到,但实际被读取到字符串中,导致indexOf返回正数,触发if块 - 调试或逻辑误解:可能你误判了代码执行流程,或者把条件中的
>0和>=0搞混了?
解决建议
- 先排查实际匹配情况:在if块里增加打印语句,确认索引值和当前行内容,搞清楚到底有没有匹配到:
if (str.indexOf("blue") > 0 ) { System.out.println("索引值:" + str.indexOf("blue")); System.out.println("当前行内容:" + str); // 你的原有逻辑 } - 忽略大小写匹配:如果不需要区分大小写,将字符串转成小写后再匹配:
if (str.toLowerCase().indexOf("blue") != -1 ) { // 逻辑代码 } - 修正判断条件:如果你只是想判断字符串中是否存在"blue",不管它在什么位置,直接用
!= -1更准确:if (str.indexOf("blue") != -1 ) { // 逻辑代码 }
内容的提问来源于stack exchange,提问作者PPavesi
相关产品推荐
相关产品推荐

