Примере:

Xxx.xxx.xxx.xxx - это формат IP-адреса, и я хочу получить только первые три сегмента (с точками): xxx.xxx.xxx.

Другой пример:

192.168.0.160, а я хочу только 192.168.0.

2
Majid ff 13 Фев 2015 в 18:13

4 ответа

Лучший ответ
String[] splittedArray = ipAddressString.split("\\.");
String firstThreeSegments = splittedArray [0] + "." + splittedArray [1] + "." + splittedArray [2] + ".";
6
Dany Caissy 13 Фев 2015 в 15:25

Я бы сказал, что самый простой метод (ИМО) - использовать (из Apache Commons) StringUtils.ordinalIndexOf(), чтобы найти значение индекса третьего период, а затем используйте substring(), чтобы взять подстроку от 0 до этого значения индекса.

Например:

StringUtils.ordinalIndexOf("192.168.0.160", ".", 3)  == 9

Затем вы можете использовать этот индекс для получения подстроки.

0
HavelTheGreat 13 Фев 2015 в 15:18

Вы можете использовать String#replaceFirst

String firstThree = ip.replaceFirst("\\d+$", "");

Это заменит последнюю часть любого действительного IP-адреса пустой строкой.

Демо RegEx

3
anubhava 13 Фев 2015 в 15:29
String partialIp = ipAddress.substring(0, ipAddress.lastIndexOf(".")+1);
4
dave823 13 Фев 2015 в 15:36