当我从打开的套接字中获取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声明未被检测到。
任何人都能看到我做错了什么?
答案 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()
方法。