我正在尝试使用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
有人可以告诉我如何用我正在使用的代码行完成这项工作吗?
答案 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