首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用Java或C++检查输入的大写或小写字母的.txt文件?

如何用Java或C++检查输入的大写或小写字母的.txt文件?
EN

Stack Overflow用户
提问于 2017-08-11 13:32:02
回答 1查看 82关注 0票数 0

我发现了很多关于字母从小写到大写转换的问题,反之亦然,但我有一个稍微不同的问题:

我想要写一个程序,以.txt文件作为输入,读取它们并检测文本中字符从大写到小写的所有位置。例如,读取输入文件:

测试AJHFOJEOJkljklfjddejhjhoIOJOJFOJlkmlkloisjdo...:input.txt

程序会告诉我,在10和30位置,文本从上到下转换为小写。

我知道,这在普通英语文本中是没有意义的,因为文本不会经常从上到下变化。然而,我的程序不应该阅读用英语写的文本,而是包含DNA序列的文本,其中一个基因的所有外显子都用大写字母写,所有内含子都用小写写。简单地说,我的程序应该把DNA序列作为输入(作为.txt文件),然后告诉我外显子与内含子相邻的所有位置。

在下一步中,程序应该输出并进一步处理它在第一步中检测到的所有位置的最后三个大写字母和前六个小写字母。因此,对于上面显示的测试input.txt,它将输出:

EOJkljklf和FOJlkmlkl

这个程序的目的是在我作为.txt文件提供的任何基因中找到所有所谓的‘剪接供体位点’,然后进一步分析它们。

(技术术语:剪接供体位点是一个mRNA转录子的外显子/内含子边界上的9个碱基的序列,外显子的最后三个碱基和下一个内含子的前六个碱基,U1 snRNA结合并启动剪接过程)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-11 16:23:27

我假设您在Linux环境中,并且在命令行终端上使用该程序。

以下是一个简单的解决方案:

代码语言:javascript
复制
#include <fstream>
#include <iostream>

int main (int argc, char **argv) {
  int i, line_size;
  std::ifstream myfile;
  std::string token;

  // Check if user put an input file as argument
  if(argc < 2){
    std::cout << "Usage : ./parser filename" << std::endl;
    return 0;
  }

  // Open file and check for errors
  myfile.open(argv[1]);
  if(!myfile){
    std::cout << "Error opening file" << std::endl;
    return -1;
  }

  // For each line, put the line in variable token
  while(getline(myfile, token)){
    line_size = token.size();

    for(i=2; i < line_size - 4; ++i){
      // Go through the line and check for each character if it 
      // is an uppercase character and if the following one is
      // a lowercase character. If so, print it.
      if(std::isupper(token[i]) && std::islower(token[i+1])){
    std::cout << token.substr(i-2, 6) << std::endl;
      }
    }

  }

  myfile.close();
  return 0;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45636510

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档