У меня здесь три строки.
линия 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,
Конечно, вместо групп захвата мы можем использовать классы символов, подобные этому
Вы можете попробовать регулярное выражение [TCM]\d+[\|;]
, http://regexr.com/v1?38ls3. И как источник java:
String reg= "[TCM]\\d+[\\|;]";
String line = "56,C0348|23064,C0319|23182,C0127|1476,C0378|2004,C0260|3306,C0091|23179,C0525|";
line = line.replaceAll(reg, "");
System.out.println(line);
line = "8966,T4992|4446,T4992|4445,E|8965,E;T4992|8964,E;C0163|";
line = line.replaceAll(reg, "");
System.out.println(line);
line = "920,M128;C0323|";
line = line.replaceAll(reg, "");
System.out.println(line);
вывод:
56,23064,23182,1476,2004,3306,23179,
8966,4446,4445,E|8965,E;8964,E;
920,
так как это значения, разделенные запятой, вы можете разбить их как
String arr[] = line.split (",");
// iterate over them
int index = arr[0].indexOf ("|");
if (index != -1) {
// do substring
}