2017-03-21 1 views
1

문자열의 발생 부분 문자열을 erlang의 다른 텍스트로 바꾸고 싶습니다.Erlang 문자열의 하위 문자열 바꾸기

예는 질문에 대해 : 나는 file_name2 텍스트 file_name1를 교체합니다.

입력 : /사용자/홈/file_name1 출력

가 .txt : /사용자/홈/file_name2 대답은 감사와 설명

가 .txt! 감사합니다 :)

+2

가능한 중복 (HTTP : // 유래 .com/questions/25703670/remove-a-substring-string-of-a-string-in-erlang) –

답변

2

re 모듈을 사용할 수 있습니다. 얼랑의 예는 다음과 쉘 :

12> re:replace("erlang/merl/Makefile", "Makefile", "README.md", [{return,list}]). 
"erlang/merl/README.md" 
13> re:replace("erlang/merl/Makefile", "Makefile", "README.md", [{return,binary}]). 
<<"erlang/merl/README.md">> 
14> {ok, Mp} = re:compile("Makefile"). 
{ok,{re_pattern,0,0,0, 
      <<69,82,67,80,87,0,0,0,0,0,0,0,81,0,0,0,255,255,255,255, 
       255,255,...>>}} 
15> re:replace("erlang/merl/Makefile", Mp, "README.md", [{return,list}]). 
"erlang/merl/README.md" 
16> 
또한

용량이 큰 데이터와 일치하는 경우, re2 도움이 될 수 있습니다. 그래도 NIF 라이브러리입니다. 즉, 파일명 - 변경 대소 특정 사용의 경우

+0

감사합니다. @ YoshihiroTanaka !! :) –

3

는이 같은 것을 할 수 있습니다 : [얼랑 문자열의 부분 문자열/문자열 패턴을 제거]의

1> filename:dirname("/user/home/file_name1.txt") ++ "/" ++ "file_name2.txt". 
"/user/home/file_name2.txt" 
2> 
+0

에 가입하려면 대신 모듈에서 함수를 사용할 수 있습니다 :'filename : join (파일명 : dirname (FName), FName2) .' –

+0

더 좋았습니다. –

+0

감사합니다, @DerekBrown, 그것은 파일 이름 usecase에 대한 정말 좋은 솔루션입니다 !! :) ++ 1. –