【发布时间】:2013-08-03 15:54:40
【问题描述】:
我有一个用下划线分隔单词的字符串(例如 aaa_bbb_ccc)
我创建了一个函数来将字符串转换为 camelCase(例如 aaaBbbCcc)。
我想知道是否有一些我做错的事情会影响性能。这是代码:
(defun underscore-to-camel (input)
(defparameter input-clean-capitalized (remove #\_ (string-capitalize input)))
(setf (aref input-clean-capitalized 0) (aref (string-downcase (aref input-clean-capitalized 0)) 0))
input-clean-capitalized)
我还创建了第二个变体,但速度慢了约 25%(使用 time 测量了 300 万次执行):
(defun underscore-to-camel-v2 (input)
(defparameter input-clean-capitalized (remove #\_ (string-capitalize input)))
(concatenate
'string
(string-downcase (aref input-clean-capitalized 0))
(subseq input-clean-capitalized 1)))
【问题讨论】:
-
为什么不简单地使用正则表达式替换
\([a-z]\)_\([a-z]\)与\1\,(upcase \2)? -
我正在使用 lispbox(Clozure Common Lisp)。默认情况下,正则表达式不可用。你建议哪个库支持
upcase? -
您可能希望正确缩进代码。然后
defparameter不会那样使用。defparameter用于全局函数 -
感谢所有帮助过我的人。
标签: string performance lisp common-lisp