C# 如何在C中将整个数组附加到字符串# 我试图用C++把一个程序重新创建成C窗口窗体程序,大部分都是这样做的。有一件小事让程序无法正常工作

C# 如何在C中将整个数组附加到字符串# 我试图用C++把一个程序重新创建成C窗口窗体程序,大部分都是这样做的。有一件小事让程序无法正常工作,c#,c++,C#,C++,我的程序是一个生物信息程序,允许用户输入DNA或RNA字符的字符串/序列,程序将其转换为相应的蛋白质/氨基酸,并为程序看到的每个密码子打印出一个氨基酸/蛋白质。所以,如果我输入“AAA GGG CCC”,它会输出“赖氨酸甘氨酸脯氨酸” 这是我在C++版本中遇到的代码片段 for (i=0; i<numberOfCodons;i++) { endIndex=beginIndex+3; codon=""; { //here is where I'm ha

我的程序是一个生物信息程序,允许用户输入DNA或RNA字符的字符串/序列,程序将其转换为相应的蛋白质/氨基酸,并为程序看到的每个密码子打印出一个氨基酸/蛋白质。所以,如果我输入“AAA GGG CCC”,它会输出“赖氨酸甘氨酸脯氨酸”

这是我在C++版本

中遇到的代码片段
for (i=0; i<numberOfCodons;i++)
{
    endIndex=beginIndex+3;
    codon="";
    {
        //here is where I'm having the trouble converting this to C# and have it cout the write
        //way                  
        codon.append(RNA.substr(beginIndex,endIndex-beginIndex));
    }
    for (k=0;k<64;k++)
    {
        if(codon==codons[k])
        {
             //here is where I'm having the trouble converting this to C# and have it cout the write way
             //like I metioned previously AAA GGG CCC couts Lysine Glycine Proline 
             protein.append(aminoAcids[k]);                
        }            
    }
    beginIndex+=3;
}
cout<<protein<<endl;
protein.clear();

for(i=0;i尝试更改循环中的这一行

protein = (aminoAcids[k]); 

C++版本循环64次,并附加到一个字符串,C版本每次重新初始化字符串,最后与比较<代码>找到的最后一个匹配结束(如果(CODON= CODON[K])

密码子字符串也会发生同样的情况
这将在每个循环中重新初始化它

codon=(RNA.Substring(beginIndex, endIndex - beginIndex));  
但是,在这种情况下,我不确定构建单个字符串然后对照字符串数组(如
codons[k]


注:虽然它们对生成的代码没有影响,但我发现你随意使用括号有点分散注意力。你可以编写
氨基酸[k];
密码子=RNA.Substring(beginIndex,endIndex-beginIndex);
。这是(在我看来)更清楚。

您的代码非常适合在C#中广泛使用的LINQ。如果我正确理解了逻辑,您可以编写如下代码:

richTextBox2.AppendText(string.Join("\n",
                                      Enumerable.Range(0, numberOfCodons)
                                        .Select(i => RNA.Substring(i * 3, i * 3 + 3))
                                        .Where(c => codons.Contains(c))
                                        .Select(c => aminoAcids[codons.IndexOf(c)])
                                        .ToArray())
                                    );

此外,考虑使用StringBuilder@GiladNaaman,不确定在这种情况下,StringBuilder的使用是否真的有效。请参见此处。
codon=(RNA.Substring(beginIndex, endIndex - beginIndex));  
richTextBox2.AppendText(string.Join("\n",
                                      Enumerable.Range(0, numberOfCodons)
                                        .Select(i => RNA.Substring(i * 3, i * 3 + 3))
                                        .Where(c => codons.Contains(c))
                                        .Select(c => aminoAcids[codons.IndexOf(c)])
                                        .ToArray())
                                    );