如何识别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 :(得分:1)
在Erlang中,字符串通常包含Latin-1或Unicode代码点,因此您应该为“ä”寻找228,为“ö”寻找246,为“ü”寻找252.
除了H
是单个字符,并且您将其与字符串("ü"
,"ä"
和{进行比较'之外,您的文字部分应该透明地完成此工作{1}})。相应的字符文字是"ö"
,$ü
和$ä
- 确保您的源文件保存为Latin-1,以便工作。