Java 关键字子串

标签 java string substring match

我必须从一个字符串中创建单独的字符串。

例如给定字符串:

.*C.{0}A.{2}T.{0}T.{0}T.{2}T.{0}G.{8}T.{7}A.{7}T.{2}T.{12}A.{5}T.{4}T.{45}A.{1}A.{10}G.{19}A.{25}T.{3}A.{1}A.{4}G.{1}A.{2}A.{29}A.{0}C.{15}A.{1}C.{1}A.{6}T.{3}G.{5}T.{0}T.{0}C.{3}G.{2}C.{1}G.{4}G.{1}G.*

我必须创建一个包含以下内容的 HashSet:

.*C.{0}A.{2}T.{0}T.*
.*A.{2}T.{0}T.{0}T.*
.*T.{0}T.{0}T.{2}T.*
.*T.{0}T.{2}T.{0}G.*
...

这些元素是通过从原始字符串中取出 4 个条目并从中创建一个较小的字符串来形成的。然后,您在原始字符串中移动一个条目并重复。

我该怎么做?

谢谢!

最佳答案

您想要获取一个表示元素列表的字符串,并将其转换为一组重叠的较短元素列表。您可以通过使用一个从列表中返回元素的方法,然后使用一个选择要显示的元素集的滑动窗口来实现此目的:

private static final Pattern pattern = Pattern.compile("[ACGT]\\.\\{\\d+\\}");

public static List<String> extract(String input) {
    Matcher matcher = pattern.matcher(input);
    List<String> result = new ArrayList<String>();

    while (matcher.find()) {
        result.add(matcher.group(0));
    }

    return result;
}

public static Set<String> compose(List<String> elements, int window) {
    Set<String> result = new HashSet<String>();

    for (int i = 0; i <= elements.size() - window; i++) {
        StringBuilder builder = new StringBuilder(".*");
        for (int j = i; j < i + window; j++) {
            builder.append(elements.get(j));
        }
        // This strips the final quantifier turning:
        // .*C.{0}A.{2}T.{0}T.{0}
        // into
        // .*C.{0}A.{2}T.{0}T
        builder.delete(builder.lastIndexOf("."), builder.length());

        builder.append(".*");
        result.add(builder.toString());
    }

    return result;
}

您可以通过以下方法检查:

public static void main(String[] args) {
    String input = ".*C.{0}A.{2}T.{0}T.{0}T.{2}T.{0}G.{8}T.{7}A.{7}";

    Set<String> result = compose(extract(input), 4);

    // The result will contain
    // ".*C.{0}A.{2}T.{0}T.*"
    // etc
}

关于Java 关键字子串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28440000/

相关文章:

java - 从java代码运行Linux命令(远程操作系统)

java - KeyListener 在 JFrame 中随机工作

c# - System.Convert.ToSingle() 问题,(1.5) 与 (1,5)

python 3字典键到一个字符串,值到另一个字符串

c - 为什么 substring 不是 C 标准库的一部分?

java - 扩展类时构造函数出错

Java:混合(数据类型)变量参数

string - 访问字符串的随机 rune 元素而不使用 for ... range

SQL子字符串非贪婪正则表达式

java - 在Android中从字母数字字符串中提取数字