有沒有什麼方法可以從字符串中刪除IP?從Java字符串中刪除IP地址
我們得到的輸入文件有時會將IP附加到用戶名,例如,
Jan vd Merwe Piet Breedt (172.166.23.41) Jan vd Merwe (164.23.23.51) Sarel Fourie (23.12.167.244) Piet Breedt
所以如果有一個IP,我想刪除它。我一直在尋找很多功能,但似乎無法得到索引和參數。
有沒有什麼方法可以從字符串中刪除IP?從Java字符串中刪除IP地址
我們得到的輸入文件有時會將IP附加到用戶名,例如,
Jan vd Merwe Piet Breedt (172.166.23.41) Jan vd Merwe (164.23.23.51) Sarel Fourie (23.12.167.244) Piet Breedt
所以如果有一個IP,我想刪除它。我一直在尋找很多功能,但似乎無法得到索引和參數。
使用與string.replace():
String myString = "Piet Breedt (172.166.23.41)";
// replace everything in between the parens (including the parens) by the empty String
myString = myString.replace("\(.*\)", "");
當然,正則表達式可以專門只匹配IPS,像
\(\\d{1,3}\.\\d{1,3}\.\\d{1,3}.\\d{1,3}\)
編輯
這裏的你將如何更換文件中的行(僞代碼):
正則表達式應該是\\(\\ d {1,3} \。\\ d {1,3} \。\\ d {1,3}。\\ d {1,3} \\) – Vishwanath 2010-11-14 16:14:12
如何在沒有數組的情況下使用它,即,我需要更改哪些內容。 – Jaques 2010-11-14 16:44:23
@vish Thx,修復它。 – helpermethod 2010-11-15 23:31:30
您可以查找(
並刪除剩餘的字符串。
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)
您的第一個解決方案將失敗'Jan vd Merwe(Jan)'這樣的數據 – 2010-11-14 16:11:40
這不符合'規範'。它說IP。如果OP不是IP,也許OP想把它放在括號內。 – 2010-11-14 16:16:51
@ org.life.java:沒有在任何地方定義。如果OP確定沒有特殊情況,則無需擔心特殊情況。 – darioo 2010-11-14 16:18:10
你喜歡*提取* ip嗎? (或刪除它並提取名稱) – aioobe 2010-11-14 15:39:02
你想刪除'在'文件? – helpermethod 2010-11-15 23:34:45