如何从字符串中删除 '\u0002'、'\r\n' 和 '\u0003'?

How to get rid of '\u0002', '\r\n', and '\u0003' from string?

如何剥离字符串以获得干净7A005AFA518B?现在初始化它 returns 位串,似乎 strip 对它不起作用。我尝试使用模式匹配从起始文本 unicode“\u0002”到结束“\u0003”获取字符串,然后删除,但没有成功。

str = "\u00027A005AFA518B\r\n\u0003"
String.codepoints(String.strip(str))
[<<2>>, "7", "A", "0", "0", "5", "A", "F", "A", "5", "1", "8", "B", "\r", "\n",
 <<3>>]

我发现 String.split(str, "\r\n") 做这项工作,但也许它是更清洁的方式?

您可以使用 org.apache.commons.lang3.StringUtils.trim(String str)

    Enum.filter(to_char_list(str), &(&1 > 32 && &1 < 122))

喜欢一个解决方案来获得清晰的字符串

你试过replace函数了吗:

IO.puts String.replace(String.replace(str,"\u0003",""),"\u0002","")

String.stripString.lstripString.rstrip 默认去除空格,但将 char 代码作为第二个参数。 \u0002(文本开头)和 \u0003(文本结尾)字符分别具有代码 23。所以你可以这样做,同时保留 unicode 字符等:

str = "\u00027A005AFA518B\r\n\u0003"

str |> String.lstrip(2) |> String.rstrip(3) |> String.strip
#=> "7A005AFA518B"