Java:从组

时间:2018-04-17 07:14:31

标签: java regex string string-formatting

在out应用程序中,我们需要比较和操作函数代码,如下所示:

function void disableTestOnDevice(SampleBuilder sample,String devices,String[] devTestCode) {\r\n\t\t   if(devices == null)\r\n\t\t\t   return;\r\n\t       if(sample.getListTransc() != null && sample.getListTransc().size() > 0){\t\r\n\t\t\t\tfor(int i = sample.getListTransc().size()-1; i >= 0; i--){\r\n\t\t\t\t\tViewWorklistBuilder j = (ViewWorklistBuilder)sample.getListTransc().get(i);\r\n\t\t\t\t\tif(j.getDeviceId() == null || j.getDeviceTestCode() == null || j.getDeviceSpecimenCode() == null){\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(j.getDeviceId().equals(devices)){\r\n\t\t\t\t\t\tif(devTestCode != null){\r\n\t\t\t\t\t\t\tfor(int k = 0;  k < devTestCode.length; k++){\r\n\t\t\t\t\t\t\t\tif(j.getDeviceTestCode().equals(devTestCode[k])){\r\n\t\t\t\t\t\t\t\t\tj.setEnabled(0);\r\n\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t}\r\n\t       }\r\n\t\r\n

有时会添加一些额外的\t\r\n,我不知道为什么。 因此,在比较两个函数(两个String对象)之前,我想从每个组中删除多次出现的不可打印字符。 例如,一组像 \r\n\t\r\n应该成为\t\r\n

或许,像是

if(devices == null)\r\n\t\t\t   return;\r\n\t\t
for(int i = sample.getListTransc().size()-1; i >= 0; i--){\t\r\n\t\t\t\tSystem.out.println(i);\t\r\n\t\t\t\}

应该成为

if(devices == null)\r\n\t   return;\r\n\t
for(int i = sample.getListTransc().size()-1; i >= 0; i--){\t\r\nSystem.out.println(i);\t\r\n}

或许,我的问题可能会更加阴险。 我的意思是,匹配\r\n\t的任何不可打印字符组都可能成为\n\t

1 个答案:

答案 0 :(得分:1)

如果目的是将更改与另一个字符串进行比较,可能的解决方案是删除两者中的\r\n\t并进行比较。

String s = "function void disableTestOnDevice(SampleBuilder sample,String devices,String[] devTestCode) {\r\n\t\t if(devices == null)\r\n\t\t\t return;\r\n\t";
String s1 = "function void disableTestOnDevice(SampleBuilder sample,String devices,String[] devTestCode) {\n\t\t if(devices == null)\n\t\t\t return;\n\t";
System.out.println(s.replaceAll("\\r|\\n|\\t", ""));
// false
System.out.println(s.equals(s1));
// true
System.out.println(s.replaceAll("\\r|\\n|\\t", "").equals(s1.replaceAll("\\r|\\n|\\t", "")));