エリクサーregex:どのように文字と数字の間にアンダースコアを置くには?
3434 ワード
イントロ
今日、私は
camelCase word combined with a number
になるためにsnake_case atom
を変えることに苦労していました"helloWorld30" -> :hello_world_30
私は以前242479142を使用して、アンダースコアを追加するために文字列を操作するためにそれを使用しないでください....Do not use it as a general mechanism for underscoring strings as it does not support Unicode or characters that are not valid in Elixir identifiers.
elixir docs
それが私が
Macro.underscore/1
を使用した理由ですiex) "helloWorld30"
|> Inflex.underscore()
iex) "hello_world30"
誰かが私を助けてください!
しかし、まだ
Inflex: An Elixir library for handling word inflections
だけを使用して、私が欲しい出力を見ることができません.幸いにも、私はコミュニティに尋ねて、誰かが私を助けたことを神に感謝します.
Inflex
まで叫ぶ🚀.彼は
Karl Seguin
モジュールを使用して提案しています.ここでは彼が与えた正規表現です.
iex) Regex.replace(~r/([A-Za-z])(\d)/, "Hello World9000", "\\1_\\2")
iex) "Hello World_9000"
私自身のバージョン
RegEx
モジュールを使用して別のバージョンで.
iex) "helloWorld30
|> String.replace(~r/(\D)(\d)/, "\\1_\\2")
iex) "helloWorld_30"
全体出力
Camelcaseの単語を数と一緒に変換し、SnakeRankケースAtomになります.
iex) "helloWorld30"
|> Inflex.underscore()
|> String.replace(~r/(\D)(\d)/, "\\1_\\2")
|> String.to_atom()
iex) "hello_world_30"
Happy coding!
Reference
この問題について(エリクサーregex:どのように文字と数字の間にアンダースコアを置くには?), 我々は、より多くの情報をここで見つけました https://dev.to/paugramming/elixir-regex-how-to-put-an-underscore-between-a-letter-and-a-number-l7bテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol