在java中将字符串或字符转换为新字符串的简短方法

时间:2018-01-09 16:14:07

标签: java string bash char tr

我正在尝试将字符串中的字符转换为新字符。基本上它会将ATCG转换为TAGC。有没有比编写for循环和检查每个字符(例如bash中的tr命令)更短的方法?

1 个答案:

答案 0 :(得分:0)

@ ifly6的评论已经勾勒出了前进的方向:

Map定义单个字符的转化规则 String转换是通过流式处理字符来完成的, 为每个角色进行转换(使用Map), 并将它们收集到String

public class Main {

    private static Map<Character, Character> charMap = new HashMap<>();

    static {
        charMap.put('A', 'T');
        charMap.put('T', 'A');
        charMap.put('C', 'G');
        charMap.put('G', 'C');
    }

    public static String transform(String s) {
        return s.chars()                               // IntStream
                .mapToObj(c -> charMap.get((char) c))  // Stream<Character>
                .map(Object::toString)                 // Stream<String>
                .collect(Collectors.joining());        // String
    }

    public static void main(String[] args) {
        System.out.println(transform("ATTCGAGC"));     // prints "TAAGCTCG"
    }
}

你会注意到(至少对于新手来说)流更难 理解比传统的for循环。

我建议阅读Java 8 streams 以及上面代码中使用的方法的Javadoc。