c - 删除 C 中的非字母字符

标签 c unix replace char

有没有一种简单的方法可以用空格替换字符数组中的所有非字母字符,就像您使用下面的 bash 命令所做的那样?

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

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

最佳答案

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

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

  array++;
}

关于c - 删除 C 中的非字母字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16431858/

相关文章:

bash - 使用 bash 替换多个文件中的特定行

javascript - 在 JavaScript 字符串中写入双引号

c - 如何访问单独头文件中的定义值

c - C 中 union 体的行为

c - 在 C 中,fgets 和 continue 跳过不止一行

c - linux c语言环境下如何给用户授权?

unix - Grep 查找文字字符串

python - 如何用单个元素替换二维 numpy 数组中重复的连续元素

linux - 如何删除带有特殊字符的文件?

c++ - 向/从轮询添加/删除描述符的优雅方式