删除C中的非字母字符

时间:2013-05-08 02:46:36

标签: c unix replace char

是否有一种简单(ish)的方法可以用空格替换字符数组中的所有非字母字符,例如您可能使用下面的bash命令?

sed's / [^ a-zA-Z] / / g'

我唯一能想到的就是遍历char数组&比较&逐个字符替换。我不知道是否有一个可以做同样的C函数。

1 个答案:

答案 0 :(得分:3)

据我所知,无论如何,没有办法比O(n)更好。即使有这样的功能甚至是正则表达式引擎,它也可能比简单的线性复杂性解决方案效率低。你可以循环遍历数组,任何小于'A'或大于'z'的东西都会设置为''。

while(*array)
{
  if(!isalpha(*array))
    *array = ' ';

  array++;
}