0

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

它只是传递所有参数而不匹配,直到为真...谢谢您的帮助。

4

1 回答 1

1

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

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

于 2013-05-20T15:51:33.477 回答