如何忽略字符数组中的某些字母和空格

How to ignore certain letters and spaces in character arrays

本文关键字:空格 何忽略 字符 数组      更新时间:2023-10-16

试图制作一个else语句,去掉所有其他字母和空格,然后去掉我想要的字母和空格。此功能用于将用户输入的字母更改为其他字母

using namespace std;
    void dna_to_rna(char rna[]) 
    {
        for (int i = 0; i < 100; i++)
        {
            if (rna[i] == 'a' || rna[i] == 'A')
                rna[i] = 'U';
            else if (rna[i] == 'c' || rna[i] == 'C')
                rna[i] = 'G';
            else if (rna[i] == 'g' || rna[i] == 'G')
                rna[i] = 'C';
            else if (rna[i] == 't' || rna[i] == 'T')
                rna[i] = 'A';
}

else语句应该是什么样子才能删除所有其他字符?

如果输入参数可以更改为std::string,则可以使用以下实现之一:

void dna_to_rna(std::string& rna)
{
    auto it = rna.begin();
    while (it != rna.end())
    {
        if      (*it == 'a' || *it == 'A') *it = 'U';
        else if (*it == 'c' || *it == 'C') *it = 'G';
        else if (*it == 'g' || *it == 'G') *it = 'C';
        else if (*it == 't' || *it == 'T') *it = 'A';
        else
        {
            it = rna.erase(it);
            continue;   // it already "points" to the next element
        }
        ++it;
    }
}
std::string dna_to_rna(const std::string& dna)
{
    std::string rna;
    for (auto c : dna)
    {
        if      (c == 'a' || c == 'A') rna += 'U';
        else if (c == 'c' || c == 'C') rna += 'G';
        else if (c == 'g' || c == 'G') rna += 'C';
        else if (c == 't' || c == 'T') rna += 'A';
    }
    return rna;
}

可能是这样的:

using namespace std;
void dna_to_rna(char rna[]) 
{
    string s = "";
    for (int i = 0; i < 100; i++)
    {
        if (rna[i] == 'a' || rna[i] == 'A')
            s += 'U';
        else if (rna[i] == 'c' || rna[i] == 'C')
            s += 'G';
        else if (rna[i] == 'g' || rna[i] == 'G')
            s += 'C';
        else if (rna[i] == 't' || rna[i] == 'T')
            s += 'A';
     }
     strcpy(rna, s.c_str());
}

这个想法只是简单地使用std::字符串作为临时缓冲区。字符串开头为空。然后你一个接一个地添加你想要的字符。循环完成后,将std::字符串的内容复制回rna数组。

为了让代码更简单、更容易阅读:

using namespace std;
void dna_to_rna(char rna[]) {
    int arrLength = sizeof(rna)/sizeof(rna[0]);  // Get size of array
    for (int i = 0; i < arrLength; i++){
        if (toupper(rna[i]) == 'A'){
            rna[i] = 'U';
        }
        else if (toupper(rna[i]) == 'C') {
            rna[i] = 'G';
        }
        else if (toupper(rna[i]) == 'G'){
            rna[i] = 'C';
        }
        else if (toupper(rna[i]) == 'T'){
            rna[i] = 'A';
        }
    }
}

我创建了第二个数组,只要我要查找的信息符合必要的标准,我就将其放入第二个阵列,通过创建第二个变量来计算数组中的正确位置,然后只计算cout数组

using namespace std;
    void dna_to_rna(char rna[])
    {
        int x = 0;
        char newrna[100];
        for (int i = 0; i < 100; i++)
        {
            if (rna[i] == 'a' || rna[i] == 'A')
            {
                newrna[x] = 'U';
                x++;
            }
            else if (rna[i] == 'c' || rna[i] == 'C')
            {
                newrna[x] = 'G';
                x++;
            }
            else if (rna[i] == 'g' || rna[i] == 'G')
            {
                newrna[x] = 'C';
                x++;
            }
            else if (rna[i] == 't' || rna[i] == 'T')
            {
                newrna[x] = 'A';
                x++;
            }
        }