You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DNA密码学突变处理:氨基酸序列密钥生成代码修复求助

修复C#代码实现基于Stop位点生成剩余序列密钥的需求

首先,我们先明确你的需求:给定氨基酸序列,每当遇到Stop时,生成包含从该Stop之后开始的剩余完整序列的密钥,并且第一个密钥是整个原始序列,格式为keyN:序列内容。

原代码的问题

你当前的代码用Replace("Stop", "*")然后Split('*'),得到的是被Stop分割开的片段(比如PhePheLeoArg、ValGlyArgTyr、PheArgGleHis),但这并不是你需要的“剩余完整序列”,所以无法得到预期输出。

修复后的代码

下面是调整后的代码,完全符合你的预期输出:

string mRNA = textBox3.Text;
List<string> keys = new List<string>();

// 第一个密钥是完整的原始序列
keys.Add($"key1:{mRNA}");

int currentPosition = 0;
int keyCounter = 2;

// 循环查找所有"Stop"的位置
while ((currentPosition = mRNA.IndexOf("Stop", currentPosition)) != -1)
{
    // 移动到当前"Stop"的末尾位置("Stop"长度为4)
    currentPosition += "Stop".Length;
    
    // 截取从当前位置开始的剩余字符串
    string remainingSequence = mRNA.Substring(currentPosition);
    
    // 确保剩余字符串不为空时再添加(避免最后一个Stop在序列末尾的情况)
    if (!string.IsNullOrWhiteSpace(remainingSequence))
    {
        keys.Add($"key{keyCounter}:{remainingSequence}");
        keyCounter++;
    }
}

// 将所有密钥添加到listBox1中
foreach (string key in keys)
{
    listBox1.Items.Add(key);
}

代码解释

  1. 初始密钥:直接把完整序列作为key1添加到列表中,符合预期的第一个输出项。
  2. 查找Stop位点:用IndexOf循环遍历序列中所有Stop的位置,每次找到后将索引移动到Stop的末尾。
  3. 截取剩余序列:从Stop末尾的位置开始截取子字符串,这就是你需要的“剩余字符串”。
  4. 格式与添加:按照keyN:序列的格式生成条目,添加到列表后再批量加入listBox1。

验证输出

对于你的测试序列PhePheLeoArgStopValGlyArgTyrStopPheArgGleHis,运行代码后会得到:

key1:PhePheLeoArgStopValGlyArgTyrStopPheArgGleHis
key2:ValGlyArgTyrStopPheArgGleHis
key3:PheArgGleHis

完全匹配你预期的结果。

内容的提问来源于stack exchange,提问作者safaa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:58:33