3

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

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

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

4

1 回答 1

4

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

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

  array++;
}
于 2013-05-08T02:52:12.440 回答