我有一个字符串列表,并使用li标签将其动态生成为HTML 。我也想将该值分配给id属性。但问题是字符串项具有一些特殊的字符,如:,',é,...我只是想输出只包括数字(0-9)和字母(AZ)。
// Input:
listStr = ["Pop & Suki", "PINK N' PROPER", "L'Oréal Paris"]
// Output:
result = ["pop_suki", "pink_n_proper", "loreal_paris"] ("loral_paris" is also good)
Run Code Online (Sandbox Code Playgroud)
目前,我只是将其小写并替换" "为_,但不知道如何消除特殊字符。
非常感谢!
与其考虑消除特殊字符,不如考虑允许的字符-您只需要小写字母数字字符。
Elm提供Char.isAlphaNum来测试字母数字字符,并提供Char.toLower来将字符转换为小写。它还提供了更高的功能String.foldl,你可以用它来处理String一个Char在同一时间。
因此,对于每个字符:
放在一起,我们创建了一个处理字符的函数,并将其附加到到目前为止已处理的字符串中,然后将其应用于输入字符串中的所有字符:
transformNextCharacter : Char -> String -> String
transformNextCharacter nextCharacter partialString =
if Char.isAlphaNum nextCharacter then
partialString ++ String.fromChar (Char.toLower nextCharacter)
else if nextCharacter == ' ' then
partialString ++ "_"
else
partialString
transformString : String -> String
transformString inputString =
String.foldl transformNextCharacter "" inputString
Run Code Online (Sandbox Code Playgroud)
在线演示在这里。
注意:此答案仅会丢弃特殊字符,并因此产生"loral_paris"OP可接受的字符。