使用replaceAll()在括号后删除

时间:2015-03-19 18:03:31

标签: java

我正在尝试使用replaceAll删除数字代码行中的括号和逗号,如下所示:

00020001 OB #2 [00\01] File Meta Information Version
00020002 UI #26 [1.2.840.10008.5.1.4.1.1.4] Media Storage SOP Class UID
00020003 UI #62 [1.3.46.670589.11.0.0.11.4.2.0.8743.5.5396.2006120114483570701] Media Storage SOP
00020010 UI #20 [1.2.840.10008.1.2.1] Transfer Syntax UID

使用以下代码行:

String replaced = dcmObj.toString().replaceAll("[(),*]", "");

我想更进一步,删除所有数字代码,例如:

00020010 UI #20 [1.2.840.10008.1.2.1] Transfer Syntax UID

将转向:

00020010

有人可以告诉我如何用我正在使用的代码行完成这项工作吗?

2 个答案:

答案 0 :(得分:1)

只需在数字后匹配字符串的其余部分即可。

replaceAll(" UI.*","")

但是,我建议匹配数字ID,它更干净,更强大,以防你的行格式改变

id = dcmObj.toString().matches("\d+"); 

答案 1 :(得分:1)

您可以尝试在组中存储行号的广告开头,并用该组中的匹配替换整行。

yourTest = yourText.replaceAll("(?m)^(\\d+).*", "$1");

(?m)表示MULTILINE标志,它允许^匹配行的开头,而不仅仅是整个字符串的开头。

样本:

String s = 
        "00020001 OB #2 [00\\01] File Meta Information Version\r\n" + 
        "00020002 UI #26 [1.2.840.10008.5.1.4.1.1.4] Media Storage SOP Class UID\r\n" + 
        "00020003 UI #62 [1.3.46.670589.11.0.0.11.4.2.0.8743.5.5396.2006120114483570701] Media Storage SOP\r\n" + 
        "00020010 UI #20 [1.2.840.10008.1.2.1] Transfer Syntax UID";
System.out.println(s.replaceAll("(?m)^(\\d+).*", "$1"));

输出:

00020001
00020002
00020003
00020010