更确切地说

更确切地说

是否有一种简单的方法可以通过命令从给定的字符串中删除特殊字符(例如é,,,等等) ?Éàç\removeSpecialCharacters{...}

更确切地说

我想删除所有字符,但a...zA...Z0...9如果可能的话,用非重音字符替换重音字符。

答案1

有点难以确切知道您所说的删除是什么意思,以及特殊是什么意思。

您可以删除包含重音符号或变音符的字符(见下文),也可以从这些字符中删除重音符号和变音符。

为了删除重音,你可以暂时重新定义\add@accent,灵感来自这个答案

以下代码将删除人物包含重音符号和 c-cedilla ( ç):

\documentclass{article}
\usepackage[utf8]{inputenc}

\makeatletter
\newcommand\removeSpecialCharacters[1]{
  \begingroup
  \let\c\@gobble% Removes the c-cedilla (ç)
  \renewcommand\add@accent[2]{}
  #1
  \endgroup
}
\makeatother
\begin{document}
  \removeSpecialCharacters{Héllo world} %<-- Hllo world
\end{document}

虽然这将消除口音从角色来看:

\documentclass{article}
\usepackage[utf8]{inputenc}

\makeatletter
\newcommand\removeSpecialCharacters[1]{
  \begingroup
  \let\c\relax% Removes the cedilla (ç -> c)
  \renewcommand\add@accent[2]{##2}
  #1
  \endgroup
}
\makeatother
\begin{document}
  \removeSpecialCharacters{éÉàç} %<- returns eEac
\end{document}

相关内容