Erlang识别变音符号

时间:2013-05-20 15:39:26

标签: unicode io erlang ascii

如何识别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;

它只传递所有参数而没有匹配,直到真... 谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

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

除了H是单个字符,并且您将其与字符串("ü""ä"和{进行比较'之外,您的文字部分应该透明地完成此工作{1}})。相应的字符文字是"ö" - 确保您的源文件保存为Latin-1,以便工作。