【问题标题】:String comparison solutions in java not workingjava中的字符串比较解决方案不起作用
【发布时间】:2013-02-24 17:18:28
【问题描述】:

我知道这个问题已经被问死了,但我已经尝试了所有提供给this question 的解决方案,但我的 if 语句仍然没有执行.. 我的代码是这样的:

String s = "Something*like*this*";
String[] sarray = s.split("\\*");

for(int i = 0; i < sarray.length; i++) {
  if(sarray[i].equals("this")) {
    //do something
  }
}

任何建议将不胜感激。

【问题讨论】:

  • 我看不出这段代码有任何问题。尝试在循环中打印出数组的元素。还要检查虚假的空白字符。
  • 也许您的输入字符串不是完全您在此示例中使用的字符串。考虑到有些字符是不可打印的(因此您通常既不会在编辑器中也不会在控制台中看到它们)
  • 您发布的代码对我来说很好用。发布您用于测试代码的实际 SSCCE。
  • 它按预期工作。你的环境是什么? java版本等。你在使用线程吗?
  • 我正在使用 Eclipse。问题在于我从 android 设备上的永久存储中存储和检索 s 的方式。我更改为 sql 数据库,一切正常。感谢您的 cmets

标签: java string


【解决方案1】:

这确实按预期工作

for (String token : "Something*like*this*".split("\\*")) {
    if (token.equals("this")) {
        System.out.println("Found this");
    }
}

【讨论】:

  • 有趣,不幸的是它没有奏效,并且通过弄乱你的解决方案,我得出的结论是我的“Somethinglikethis”的位置有问题from (我不创建它)即使它在输出时看起来不错。我认为重组将解决我的问题。谢谢
【解决方案2】:

if 在这里执行。

在 drJava 交互窗格(或您最喜欢的 IDE 窗格)中测试这个,各个部分(检查它们是否正常工作)。

Welcome to DrJava.  Working directory is C:\JavaProjects
> String s = "Something*like*this";

> String[] sarray = s.split("\\*");

> sarray[0]

"Something"

> sarray[1]

"like"

> sarray[2]

"this"

> sarray[3]

java.lang.ArrayIndexOutOfBoundsException

> sarray.length

> 3 

> sarray[1].equals("this")

false
> 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-12
    • 2011-09-20
    • 2012-12-06
    • 2014-06-17
    • 2016-12-16
    • 2012-12-06
    相关资源
    最近更新 更多