Java: 从组中删除多次出现的不可打印字符

Java: removing multiple occurrences of unprintable characters from group

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

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

如果目的是将变化与另一个字符串进行比较,可能的解决方案是删除两者中的 \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", "")));