簡體   English   中英

Java - 如果語句不起作用(比較字符串)

[英]Java - If statement not working (comparing strings)

當我從打開的套接字中獲取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方法,因為它比使用==運算符更可靠(它比較內容而== comnpares引用):

嘗試使用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((“一些要檢查的字符串”)。equals(myString)){doSomething(); }

比較值時始終使用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);
        }

運行這個程序。 這工作..

為什么要使用String? 你只是為自己創造這個問題。 使用提供的數據類型:

InetAddress dataSource = data.getInetAddress();

要么

SocketAddress dataSource = data.getRemoteSocketAddress();

然后在兩種情況下都有一個語義感知的.equals()方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM