编写一个函数将CamelCased文本转换为snake_case:FunctionForHTMLManipulation变为function_for_html_manipulation
在许多语言中,输入文本将是一个合适的标识符。它必须以英文字母开头,然后后面跟着任意数量的英文字母或数字。没有其他字符(空格、符号等)是允许的。
CamelCased文本中的每个“单词”将以大写字母开头,除非在文本开头或紧跟在一个数字之后,并且后面跟着零个或多个字母,这都是相同的情况。数字组将被视为单独的单词,但通过时没有变化。
换句话说,小写字母后跟大写字母表示单词中断。相邻的任何字母和数字都表示单词中断。大写字母后面跟着另一个大写字母,小写字母表示单词中断。
...lU... => ...l_u...
...l9... => ...l_9...
...U9... => ...u_9...
...9l... => ...9_l...
...9U... => ...9_u...
...UUl... => ...u_ul...
Buy24Beers和buy24beers都变成了buy_24_beers。
MacDonaldAndObrian变成mac_donald_and_obrian。
MACDonaldAndOBrian变成mac_donald_and_o_brian。
发布于 2016-04-22 13:10:32
s=>s.match(/[A-Z]+(?=[A-Z][a-z]|\d|$)|[A-Z]?[a-z]+|\d+/g).join`_`.toLowerCase()发布于 2016-04-22 07:55:13
s=>s.replace(/\d(?=\D)|\D(?=\d)|[a-z](?=[A-Z])|[A-Z](?=[A-Z][a-z])/g,"A2_").toLowerCase()https://codegolf.stackexchange.com/questions/78239
复制相似问题