3

我很尴尬地问这个问题,这是一个真正的新手问题,但它整个上午都在踢我的屁股。这里是:我正在尝试使用三个句点作为分隔符将 IP 地址分成四个单独的字符串。这是我正在使用的代码:

     Toast.makeText(getBaseContext(),s,Toast.LENGTH_SHORT).show();
     String[] ip = s.split(".",4);
     String ip0ne = ip[0];
     String ipTwo = ip[1];
     String ipThree = ip[2];
     String ipFour = ip[3];

's'是包含ip地址'82.163.99.82'的字符串,这个在toast中得到验证问题是,ipOne,ipTwo和ipThree最终什么都不包含,而ipFour最终包含'163.99.82'第一个数字IP地址完全消失了。请帮忙!

4

2 回答 2

8
String[] ip = s.split("\\.",4);

字符串参数被评估为正则表达式,因此我们必须转义点(在 java 中我们也必须转义转义字符 - 因此:双反斜杠)

于 2012-08-15T12:07:16.447 回答
1

split方法采用正则表达式-并且.在正则表达式中匹配任何字符:(我个人认为任何非正则表达式API都将正则表达式作为aString而在方法名称中没有任何指示是疯狂的,但是嘿......

可以用作"\\."拆分值 - 但我个人会使用Guava及其Splitter类型:

private static final Splitter DOT_SPLITTER = Splitter.on('.').limit(4);
于 2012-08-15T12:08:49.903 回答