将下划线字符串转换为驼峰式命名

将下划线字符串转换为驼峰式命名

我想取一个包含下划线的字符串并将其转换为骆驼香烟盒。我正尝试使用stringstrings包来执行此操作。这是我的代码:

\documentclass[11pt]{report}
\usepackage{amsmath}
\usepackage{stringstrings}
\begin{document}

\convertchar[q]{test_string}{\textunderscore}{ ??? }
\capitalizewords[q]{\thestring}
\noblanks{\thestring}

\end{document}

我不确定要将什么作为第三个参数来\convertchar将下划线转换为空格。我试过~quad。它们都产生了奇怪的错误。我可以使用什么作为第三个参数,或者,还有其他方法可以获得驼峰式大小写吗?

答案1

当链接stringstrings命令时,你应该使用编码形式(由选项给出[e])直到最后一个命令:

\documentclass[11pt]{report}
\usepackage{amsmath}
\usepackage{stringstrings}
\begin{document}

\convertchar[e]{test_string}{_}{ }
\capitalizewords[e]{\thestring}
\noblanks[q]{\thestring}
\thestring

\end{document}

在此处输入图片描述

基本上,[e]-mode 的工作方式与[q]-mode 类似,它不会产生任何输出,但会确保特殊字符(例如_)不会过早扩展。这通常是必需的,如果\thestring将其输入到另一个命令中。这种方法的最大好处是,如果编写字符串操作命令,则stringstring可以防止链式操作。手册的 §2 对此进行了详细说明。\expandafterstringstrings

答案2

这是一个在字符串中用空格替换下划线的简单方法(使用xstring包)。

在此处输入图片描述

\documentclass{article}

\usepackage{xstring}

\begin{document}

\newcommand\myStringWithUnderscores{Man_is_a_rational_animal_so_at_least_I_have_been_told}
\StrSubstitute{\myStringWithUnderscores}{_}{ }[\myStringWithSpaces]

% just for showing the results
\begin{tabular}{ll}
Original string & \texttt{\expandafter\detokenize\expandafter{\myStringWithUnderscores}}\\
Final string    & \texttt{\myStringWithSpaces}
\end{tabular}

\end{document}

至于转换为 CamelCase,嗯,这对于计算机来说不够具体,因为计算机无法自动知道哪个字母要变成大写/小写。我猜“转换为 CamelCase”不是可以轻松自动实现的高效操作,您可能必须逐个字符串地进行操作。

相关内容