2016-10-25 9 views

답변

8

무엇이 문제입니까?

String.strip은 한 문자 만 제거 할 수 있습니다. 비약으로 발생합니다 그 오류는 단일 문자 (source)에 "\r\n"을 변환하려고 :

iex(1)> s = "\r\n" 
"\r\n" 
iex(2)> <<s::utf8>> 
** (ArgumentError) argument error 

또한, String.stripString.trim 찬성에서 사용되지 않으며, 두 번째 인수로 문자열을 지원하지 않습니다,하지만 작동합니다 단지 시작에서 정확한 순서 \r\n을 제거하고 문자열의 끝 : 나는 의심

iex(1)> aaa = """ 
...(1)> fdsfds fdsfds 
...(1)> fdsfdsfds 
...(1)> fdsfdsfds 
...(1)> """ 
"fdsfds fdsfds\n fdsfdsfds\nfdsfdsfds\n" 
iex(2)> String.trim(aaa, "\r\n") 
"fdsfds fdsfds\n fdsfdsfds\nfdsfdsfds\n" 
iex(3)> String.trim(aaa, "\r\n") == aaa 
true 

당신은 "나는 새로운 라인의 모든 기호를 제거하려면"고 말했다 당신이 원하는 것입니다. 모든 \r를 제거하고 \n, 당신은 두 번 String.replace를 사용할 수 있습니다

iex(4)> aaa |> String.replace("\r", "") |> String.replace("\n", "") 
"fdsfds fdsfds fdsfdsfdsfdsfdsfds" 
+1

을'AAA |>하려면 string.replace (~ R/\ 연구 | \ n /, "") '? – mudasobwa

+0

@ mudasobwa 필자는 개인적으로 이런 간단한 경우 Regex를 사용하지 않을 것이지만, 그것은 확실히 유효한 해결책입니다! 나는 또한이 2 차원 String 교체 솔루션을 당신의 Regex 것보다 빠를 것이라고 생각하지만 그것을 측정하지는 못했습니다. – Dogbert

관련 문제