2013-05-20 89 views
0

如何识别Erlang中的德语变音符号?我现在试了几天,当我看到一个文本列表,它只是没有得到它们。我想这对于例如Erlang识别变音符号

change_umlaut(Word) -> change_umlaut(lists:reverse(Word), []). 
change_umlaut([],Acc) -> Acc; 
change_umlaut([H|T],Acc) -> 
if 
    %extended ascii characters 
    H =:= 129 -> change_umlaut(T, ["ue"|Acc]); 
    H =:= 132 -> change_umlaut(T, ["ae"|Acc]); 
    H =:= 148 -> change_umlaut(T, ["oe"|Acc]); 
    %extended ascii characters 
    H == 129 -> change_umlaut(T, ["ue"|Acc]); 
    H == 132 -> change_umlaut(T, ["ae"|Acc]); 
    H == 148 -> change_umlaut(T, ["oe"|Acc]); 
    %literals 
    H == "ü" -> change_umlaut(T, ["ue"|Acc]); 
    H == "ä" -> change_umlaut(T, ["ae"|Acc]); 
    H == "ö" -> change_umlaut(T, ["oe"|Acc]); 
    %else 
    true -> change_umlaut(T, [H|Acc]) 
end; 

它只是通过了所有的参数没有匹配,直到真的... 谢谢你的帮助。

+0

顺便说一句,你宁愿在Erlang中使用模式匹配而不是'if',就像'change_umlaut([$ü| T),Acc) - > change_umlaut(T,[“ue”| Acc]);'。 – Tilman

回答

1

在Erlang中,字符串通常包含Latin-1或Unicode代码点,因此您应该查找“ä”为228,“ö”为246,“ü”为252。

你的文字部分应该让这项工作透明,除了事实H是单个字符,而你比较它的字符串("ü""ä""ö")。相应的字符文字是, - 确保您的源文件保存为Latin-1以使其正常工作。

+0

嘿,非常感谢。有用。大! – Morton