Java - 如果语句不起作用(比较字符串)

时间:2012-12-19 04:13:28

标签: java string if-statement compare

当我从打开的套接字中获取IP地址时,有人向我发送了一个流,我注意到IP有正斜杠。

我只想简单地省略它。但首先我要验证字符串中的第一个字符是正斜杠:

String dataSource = data.getAddress().toString();

if(dataSource.substring(0,1) == "/"){
    System.out.println("trailing forward slash, delete it ");  
    dataSource = dataSource.substring(1);
}

此IF声明未被检测到。

任何人都能看到我做错了什么?

11 个答案:

答案 0 :(得分:2)

对于字符串比较,使用equals方法,因为它比使用==运算符更可靠(它会在==组合引用时比较内容):

尝试使用equals方法:

if(dataSource.substring(0,1).equals("/")){

答案 1 :(得分:2)

请使用.equals

if("/".equals(dataSource.substring(0,1))){
    System.out.println("trailing forward slash, delete it ");  
    dataSource = dataSource.substring(1);
}

而不是==

答案 2 :(得分:2)

如果你只想测试第一个字符,你可以试试方法,

<强> dataSource.charAt(0)== '/'

答案 3 :(得分:1)

你应该使用.equals进行字符串比较  所以

if(dataSource.substring(0,1) == "/")

应该是

if ("/".equals(dataSource.substring(0,1)))

答案 4 :(得分:0)

您正在将字符串与==进行比较,这意味着您正在检查这两个字符串是否完全相同的字符串引用。

使用equal()检查两个字符串是否包含相同的字符。

请参阅:http://www.leepoint.net/notes-java/data/expressions/22compareobjects.html

答案 5 :(得分:0)

使用.equals(Object).equalsIgnoreCase(String)来比较字符串。

答案 6 :(得分:0)

您需要执行dataSource.substring(0,1).equals("/"),它实际上会检查字符串的内容。 ==仅检查双方是否是同一个对象。

答案 7 :(得分:0)

试试这个

if((&#34;要检查的字符串&#34;)。equals(myString)){   做一点事(); }

答案 8 :(得分:0)

比较值时始终使用equals。说过你可以使用indexOf方法

   if (dataSource.indexOf('/') == 0) {
        dataSource = dataSource.substring(1);
    }

答案 9 :(得分:0)

String dataSource = "/hell";

        if(dataSource.substring(0,1).equalsIgnoreCase("/")){
            System.out.println("trailing forward slash, delete it ");  
            dataSource = dataSource.substring(1);
        }

运行此程序。这工作..

答案 10 :(得分:0)

为什么要使用字符串?你只是为自己创造这个问题。使用提供的数据类型:

InetAddress dataSource = data.getInetAddress();

SocketAddress dataSource = data.getRemoteSocketAddress();

然后在两种情况下都有一个语义感知的.equals()方法。