2010-06-23 101 views
0

我有一个文本文件,其中包含一长串单词。如何删除文本中的重复单词(相同单词但不同大小写)

  • 诚信
  • 诚实

我想删除大写并留下一个较低算作一个字:他们中的一些是通过案例的方式,如重叠。 我该怎么做?

谢谢。

+4

哪种语言? – 2010-06-23 18:26:12

+4

你想写一个程序来做到这一点?或者你只是有一个文本文件需要编辑一次,而你只是寻找一个工具来帮助它? – David 2010-06-23 18:31:17

+3

哪plataform? – pcent 2010-06-23 18:31:24

回答

0

我试过了。

> cat test 
Honesty 
World 
Hello 
world 
Hello 
honesty 

> sort -uf test 
Hello 
Honesty 
World 

> sort -uf test | tr A-Z a-z 
hello 
honesty 
world 

感谢您的帮助。

0
  1. 读一个字
  2. 将它转换为小写
  3. 重复检查与某种集/散列表之类的事情。

例如,在C++中,你可以使用这样的事情:

#include <set> 
#include <string> 
#include <iostream> 
#include <algorithm> 
#include <ctype.h> 

struct lowercase { 
    std::string operator()(std::string const &s) const { 
     std::string ret(s); 
     std::transform(&s[0], &s[s.length()-1], &ret[0], tolower); 
     return ret; 
    } 
}; 

int main() { 
    std::set<std::string> items; 

    std::transform(
     std::istream_iterator<std::string>(std::cin), 
     std::istream_iterator<std::string>(), 
     std::inserter(items, items.begin()), 
     lowercase()); 

    std::copy(items.begin(), items.end(), 
     std::ostream_iterator<std::string>(std::cout, "\n")); 
    return 0; 
} 
相关问题