Elixir 정규식: 문자와 숫자 사이에 밑줄을 넣는 방법은 무엇입니까?
소개
오늘 나는
camelCase word combined with a number
를 snake_case atom
로 변형시키느라 애를 먹었다."helloWorld30" -> :hello_world_30
나는 전에
Macro.underscore/1
를 사용해 보았고 밑줄을 추가하기 위해 문자열을 조작하는 데 사용해서는 안된다는 것을 알았습니다....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
그래서 사용했습니다
Inflex: An Elixir library for handling word inflections
iex) "helloWorld30"
|> Inflex.underscore()
iex) "hello_world30"
누군가 나를 도와주세요!
하지만 여전히
Inflex
만 사용하면 원하는 출력을 표시할 수 없습니다.운 좋게도 커뮤니티에 요청했고 도움을 주신 하나님께 감사드립니다.
Karl Seguin
🚀에게 외쳐보세요.그는
RegEx
모듈 사용을 제안했습니다.다음은 그가 준 RegEx입니다.
iex) Regex.replace(~r/([A-Za-z])(\d)/, "Hello World9000", "\\1_\\2")
iex) "Hello World_9000"
나만의 버전
String
모듈을 사용하는 다른 버전.
iex) "helloWorld30
|> String.replace(~r/(\D)(\d)/, "\\1_\\2")
iex) "helloWorld_30"
전체 출력
camelCase 단어를 숫자와 함께 snake_case 원자로 변환하려면 다음을 수행하십시오.
iex) "helloWorld30"
|> Inflex.underscore()
|> String.replace(~r/(\D)(\d)/, "\\1_\\2")
|> String.to_atom()
iex) "hello_world_30"
Happy coding!
Reference
이 문제에 관하여(Elixir 정규식: 문자와 숫자 사이에 밑줄을 넣는 방법은 무엇입니까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 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.)