Вы можете найти (
и удалить оставшуюся строку.
public class Main {
public static void main(String[] args) {
String[] names = { "Jan vd Merwe",
"Piet Breedt (172.166.23.41)",
"Jan vd Merwe (164.23.23.51)",
"Sarel Fourie (23.12.167.244)" };
for (String name : names) {
int parIndex = name.indexLastOf('(');
if (parIndex != -1)
name = name.substring(0, parIndex-1);
System.out.println(name);
}
}
}
печатает:
Jan vd Merwe
Piet Breedt
Jan vd Merwe
Sarel Fourie
Другое решение на основе регулярных выражений:
String[] names = { "Jan vd Merwe",
"Piet Breedt (172.166.23.41)",
"Jan vd Merwe (164.23.23.51)",
"Sarel Fourie (23.12.167.244)" };
String ipExp = "\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}";
Pattern pattern = Pattern.compile("(.*?)\\s*(\\(" + ipExp + "\\))?");
for (String nameIp : names) {
Matcher m = pattern.matcher(nameIp);
if (m.matches()) {
String name = m.group(1);
String ip = m.group(2) == null ? "n/a" : m.group(2);
System.out.printf("Name: %s, Ip: %s%n", name, ip);
}
}
Печать
Name: Jan vd Merwe, Ip: n/a
Name: Piet Breedt, Ip: (172.166.23.41)
Name: Jan vd Merwe, Ip: (164.23.23.51)
Name: Sarel Fourie, Ip: (23.12.167.244)