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



当我从打开的套接字中获取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 语句。

有人看到我做错了什么吗?

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

尝试使用以下方法equals

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

请使用 .equals

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

而不是 ==

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

dataSource.charAt(0)=='/'

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

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

应该是

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

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

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

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

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

你需要做dataSource.substring(0,1).equals("/"),这实际上检查了字符串的内容。 ==只检查两边是否是同一对象。

试试这个

if (("some string to check").equals(myString)){ 做某事();}

比较值时始终使用 equals。话虽如此,您可以根据indexOf目的使用该方法

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

运行此程序。这正在工作。.

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

InetAddress dataSource = data.getInetAddress();

SocketAddress dataSource = data.getRemoteSocketAddress();

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

最新更新