在java流中,将逗号分隔的字符串列表转换为一个列表,但如果存在子字符串,则删除每个字符串前面的子字符串

vsmadaxz  于 2021-06-27  发布在  Java
关注(0)|答案(2)|浏览(363)

使用java流,我能够转换一个逗号分隔的 String 他变成了一个 List ,但我还需要删除每个字符串前面的子字符串(如果存在)。我怎样才能在溪流中做到这一点?
到目前为止我所拥有的:

String source = "TF03,TF05,TF06,SQ07";
List<String> sourceList = Stream.of(source.split(",", -1))
    .collect(Collectors.toList());

现在我需要删除每个字符串中的“tf”或“sq”或其他前缀。
我需要编辑原始问题:
我需要删除“tf”或“sq”或其他前缀,但这个前缀也可能以字符串的形式出现。

String substringToRemove = "TF"; 
 String source = "TF03,TF05,TF06,SQ07";
 List<String> sourceList = Stream.of(source.split(",", -1))
    .collect(Collectors.toList());
pjngdqdw

pjngdqdw1#

更新

基于以下问题的更新
我需要删除“tf”或“sq”或其他前缀,但这个前缀也可能以字符串的形式出现。

import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class Main {
    public static void main(String[] args) {
        String substringToRemove = "TF";
        String source = "TF03,TF05,TF06,SQ07";
        List<String> sourceList = Stream.of(source.split(",", -1))
                                    .map(s -> s.replaceAll(substringToRemove, ""))
                                    .collect(Collectors.toList());
        System.out.println(sourceList);
    }
}

输出:

[03, 05, 06, SQ07]

原始答案

我需要删除每个字符串中的“tf”或“sq”或其他前缀。
您可以使用regex替换前缀,如下所示:

import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class Main {
    public static void main(String[] args) {
        String source = "TF03,TF05,TF06,SQ07";
        List<String> sourceList = Stream.of(source.split(",", -1))
                                    .map(s -> s.replaceAll("(\\p{L}*)(\\d+)", "$2"))
                                    .collect(Collectors.toList());
        System.out.println(sourceList);
    }
}

输出:

[03, 05, 06, 07]

正则表达式, (\p{L}*)(\d+) 有两个捕获组。第一组有 \p{L}* 它指定零个或多个字母。第二组有 \d+ 它指定一个或多个数字。替换是用指定的组(2)替换每个字符串 $2 .

t5fffqht

t5fffqht2#

你可以用 Stream#mapString#replaceAll .

String source = "TF03,TF05,TF06,SQ07";
List<String> sourceList = Stream.of(source.split(",", -1))
    .map(str -> str.replaceAll("^TF|SQ", ""))
    .collect(Collectors.toList());

相关问题