如何从java中的perl获得“tr ///”运算符的相同结果

时间:2011-09-23 22:24:50

标签: java perl

实现perl运算符tr///的最快方法是什么?

例如,如果我要使用字符串"ATGCATGC"并使用perl tr/GTCA/CAGT/,那么我会得到"TACGTACG"

是否有一个java函数可以执行此操作?

4 个答案:

答案 0 :(得分:2)

使用标准java无法做到这一点。不过有apache commons-lang library方法StringUtils.replaceChars(String str, String searchChars, String replaceChars)

像这样使用:

import org.apache.commons.lang.StringUtils;

StringUtils.replaceChars("ATGCATGC", "GTCA", "CAGT"); // "TACGTACG"

祝你的遗传学研究好运:))

答案 1 :(得分:1)

答案 2 :(得分:0)

你从

开始
perldoc -f tr

说:

The transliteration operator...

现在你知道一个好的搜索词,输入:

java transliteration

进入google.com的小方框。

第一首看起来很有趣:

jtr, a transliteration library for Java
jtr.sourceforge.net
jtr is a small Java library that emulates the 
Perl 5 "transliterate" operation on a given string. 
Most Perl 5 features are supported, including all the standard ...

答案 3 :(得分:0)

在Java中没有内置函数可以执行此操作。一个真正基本的功能就是将一个字符的每个出现都替换为另一个字符:

public static String transliterate(String str, String source, String target) {
    StringBuilder builder = new StringBuilder();
    for(int i = 0; i < str.length(); i++) {
        char ch = str.charAt(i);
        int j = -1;
        for(int k = 0; k < source.length(); k++) {
            if(source.charAt(k) == ch) {
                j = k;
                break;
            }
        }
        if(j > -1 && j < target.length()) {
            builder.append(target.charAt(j));
        } else {
            builder.append(ch);
        }
    }
    return builder.toString();
}

public static void main(String[] args) {
     System.out.println(transliterate("ABCDDCBDA", "ABCD", "1234"));
}