我这里有三根弦线。




  第1行:
  56,C0348 | 23064,C0319 | 23182,C0127 | 1476,C0378 | 2004,C0260 | 3306,C0091 | 23179,C0525 |
  
  第2行:8966,T4992 | 4446,T4992 | 4445,E | 8965,E; T4992 | 8964,E; C0163 |
  
  第3行:920,M128; C0323 |




现在,我的目标是删除具有“ Tnumber |”,“ Cnumber |”形式的字符串,“ Mnumber |”。

例如,在第一行中,我要删除“ C0348 |”,“ C0319 |”,“ C0127 |”,“ C0378 |”,“ C0260 |”,“ C0091 |”,“ C0525 |”。

在第二行中,T4992 |,T4992,T4992 |,C0163 |

第三行,M128; C0323 |

如何从每个字符串行中删除这些字符串?

我想我需要使用正则表达式,对吗?
但是,我仍然不能解决这个问题。

请你帮助我好吗?

最佳答案

您可以使用正则表达式,像这样

import java.util.regex.Pattern;

public class Test {

    private static final String REGEX = "(T|M|C)\\d+(;|\\|)?";
    private static final Pattern p = Pattern.compile(REGEX);

    public static String filterer(String inputString) {
        String result = "";
        for(String s : p.split(inputString)) {
            result += s;
        }
        return result;
    }

    public static void main(String[] args) {
        System.out.println(filterer("56,C0348|23064,C0319|23182,C0127|1476,C0378|2004,C0260|3306,C0091|23179,C0525|"));
        System.out.println(filterer("8966,T4992|4446,T4992|4445,E|8965,E;T4992|8964,E;C0163|"));
        System.out.println(filterer("920,M128;C0323|"));
    }
}


输出量

56,23064,23182,1476,2004,3306,23179,
8966,4446,4445,E|8965,E;8964,E;
920,


RegEx Demo



Debuggex Demo

当然,除了具有捕获组,我们还可以使用这样的字符类



Debuggex Demo

10-06 07:03