繁体   English   中英

查看字符串是否嵌入在较大的字符串中

see if a string is embedded in a larger string

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我有使用R看起来像这样的数据。

> hits
  Views on a 51-letter DNAString subject
subject: TCAGAAACAAAACCCAAAATCAGTAAGGAGGAGAAAGAAACCTAGGGAGAA
views:
    start end width
[1]     1  10    10 [TCAGAAACAA]
[2]    14  23    10 [CCAAAATCAG]
[3]    19  28    10 [ATCAGTAAGG]
[4]    20  29    10 [TCAGTAAGGA]
[5]    21  30    10 [CAGTAAGGAG]

所以我有一个长度为51的字符串

subject = TCAGAAACAAAACCCAAAATCAGTAAGGAGGAGAAAGAAACCTAGGGAGAA

从该subject中提取了5个子字符串。 您可以在上方看到它们。 我想看看这5个子字符串是否在我感兴趣的范围内 感兴趣的领域是从位置14 - 27

subject = TCAGAAACAAAAC |-> CCAAAATCAGTAAG <-| GAGGAGAAAGAAACCTAGGGAGAA subject = TCAGAAACAAAAC |-> CCAAAATCAGTAAG <-| GAGGAGAAAGAAACCTAGGGAGAA

换句话说,我有5个来自subject字符串的子字符串。 在这些5串,我只寻找一个谎言位置之间串14 - 27中的subject字符串。 这是我感兴趣的领域。

第一个[1]子字符串[TCAGAAACAA]并不是那么重要,因为它直接嵌入在开始位置(由坐标1 - 10给出),并且不在我感兴趣的范围内。

第二[2]通过坐标给定的字符串14 - 23告诉我,它在全部埋入我的兴趣领域 (这又是14 - 27 )。

第三[3]字符串[3]由坐标19 - 28给出。 这对我很重要 ,因为大多数字符串都嵌入到我感兴趣的区域中

第四个[4]字符串由坐标20 - 29 同样,这对我来说很重要,因为除了最后一个字符外,大多数字符串都嵌入在我感兴趣的区域中

第五个子字符串的故事也是如此。

基本上,如果60%的字符串嵌入在我感兴趣的区域中,我希望将其计算在内。

有人可以给我一个伪代码算法来做到这一点吗? 我已经考虑了一段时间绘制图表,但是我似乎无法实现它。 我正在R中执行此操作,因此我会将伪代码转换为R。而且数字60%是任意的。 我必须与我的主管确认,但是我确定这是无关紧要的。

2 个回复
def substring_index(longstring, substring):
    """Return the index of the substring in longstring."""
    # Python has a built in function for this.

def is_interesting(index, length, interesting_start, interesting_end, percentage):
    """Return true if the substring is interesting."""
    interesting = 0
    uninteresting = 0
    # check if the character at each position from index to index + length
    # is in the interesting range.
    for x in range(index, index + length + 1):
        if interesting_start < x < interesting_end:
            interesting += 1
        else:
            uninteresting += 1
    # Do some math to see if interesting / (interesting + uninteresting) 
    # is bigger than percentage

使用substring_index函数查看索引是否在长substring_index以及在哪里。

使用is_interesting函数可根据子字符串是否有趣返回布尔值。

因此,对于第一个子字符串,您可以这样称呼它:

longstring = "TCAGAAACAAAACCCAAAATCAGTAAGGAGGAGAAAGAAACCTAGGGAGAA"
substring = "TCAGAAACAA"
is_interesting(substring_index(longstring, substring), len(substring), 14, 27, 0.6)

如果我理解得很好,您需要

  1. 定义一个由开始位置和结束位置给出的“感兴趣区域”。
  2. 在较大的字符串感兴趣的区域中找到字符串或字符串的可接受部分。

所以这就是我在javascript中要做的

var fractionIsInString = function (areaOfInterest, stringToBeFound, acceptedFraction) {
    var fractionLength = Math.floor(stringToBeFound.length*acceptedFraction),
        startPosition = 0,
        endPosition = fractionLength,          
        fraction,
        keepSearching = true;

    do {
        fraction = stringToBeFound.substring(startPosition, endPosition);
        if (areaOfInterest.indexOf(fraction) > -1) {
            return true;
        }
        startPosition++;
        endPosition++;
        keepSearching = endPosition < stringToBeFound.length;
    } while (keepSearching);

    return false;
};

只需说一下

fractionIsInString('CCAAAATCAGTAAG', 'TCAGAAACAA', 0.6);

第一个参数是您感兴趣的领域,可以像这样获得

subject.substring(14, 27);

第二个参数是您从主题中获得的字符串中的第一个。 一个从0到10的值。第三个参数是要查找的第二个参数的一部分。 在这种情况下为60%。

该函数的工作方式是在较大的字符串中查找字符串的分数,如果未找到分数,则移至字符串的下一个分数,依此类推,直到找到可找到的分数或达到分数为止。字符串的结尾。

2 在较大字符串的开头查找字符串

我试图在一组字符串中找到以特定子字符串开头的字符串。 保证数组中的字符串之一以特定的子字符串开头。 我尝试使用: 其中lines是字符串数组,我正在寻找以subString 开头的数组的索引。 但是,我要么使用不正确的正则表达式,要么有更好的方法来解决这个问题? ...

2014-06-25 07:24:42 3 52   c#
3 html / javascript字符串嵌入在字符串中嵌入字符串

我想将一个javascript函数添加到html中,以获取一个jinja函数作为这样的输入 但是,据我了解,这里需要三个字符串指示器。 一个用于“详细信息”,一个用于“ jinja”输入,一个用于javascript函数本身(上面未包括)。 我知道我可以将'嵌入到'中,但是在这里我需要嵌入第三个 ...

4 在较大的字符串中查找子字符串(C)

我有一个程序,要求用户输入几个字符。 我的程序中包含大量字母,将对其进行搜索以查看是否可以找到用户的输入。 如果找到,则将打印其值的索引。 如果在数组中找到输入的多个副本,则将打印所有索引。 如果用户输入一个*字符,则可以认为它是任意字母,将被忽略,例如AB *可以是ABA,ABB, ...

2015-10-23 01:17:55 1 66   c/ string
5 将较大的字节数组转换为字符串

当N设置为125K ,以下工作 当 N 设置为128K ,相同的代码会中断: 未捕获的 RangeError:超出最大调用堆栈大小 这是一个常见的操作:实现转换的最佳方式是什么? 请注意,我确实看过这个相关的问答。 https://stackoverflow.com/a/319596 ...

6 在较大的字符串中查找子字符串的位置

我创建了一个函数,该函数应该在较大的字符串中查找子字符串的第一个字符的数字位置。 我的输出有一些问题,我不太确定为什么。 这些问题包括每次都返回 -1 而不是子字符串的整数位置。 我已经调试过,无法追踪功能出错的地方。 这是该函数应该如何执行的:如果我的字符串是“The dog was fast” ...

7 较大字符串上的preg_grep

我需要在带有HTML文件内容的某些字符串上使用preg_reg。 问题在于数组有时看起来像这样: 我试图在其中放置一些空格。:P无法工作..://稍后,我将像这样执行preg_grep: 因此,基本思想是将{{testto}}放入数组中,每次出现{{sometext}} ...

8 AWK字符串和值大于

我正在研究一些电子邮件日志,我想检查哪些电子邮件超出了特定大小。 实际上,在日志中,我有文本“ size =”,后跟值。 有没有办法找到单词'size ='之后超过所选限制的所有值? 行示例: 我只想将超过10MB(10485760字节)的行输出到新的文本文件。 ...

2017-09-11 06:35:04 4 498   linux/ awk
9 替换较大字符串的一小部分

所以我已经编写了以下代码来遍历每个Anchor,获取它的href,如果它包含旧地址,则尝试用新的地址替换旧的base。 虽然这个代码与网站之前很明显存在问题,但我需要一个快速而肮脏的解决方案来解决这个问题,所以这个代码就是我想要的。 所以,下面的代码不起作用。 .replace显然需要 ...

10 在更大的字符串中查找嵌套序列

我们的任务是找到一个数字序列,该序列可以嵌套在另一个相等或更大的一组数字内,可以按某个数字进行转置,也可以颠倒然后转置。 输入来自文本文件。 如果找到的数字是原样或转置的,则输出找到该数字的起始索引,否则将其倒置或倒置和转置,然后输出索引。 示例-如果要查找的数字是67654,则可以找 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM