V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iSNN
V2EX  ›  Java

Java 怎么去掉这些奇怪的字符

  •  
  •   iSNN · 2022-12-16 22:50:26 +08:00 · 2088 次点击
    这是一个创建于 706 天前的主题,其中的信息可能已经有所发展或是发生改变。
    想请教各位大佬一个问题,百度谷歌都没找到解决方案,可能是我太弱了吧 23333

    有一些奇奇怪怪的字符,显示就是白框
    比如字符串(注意 a 、b 、c 后面都跟了一个东西,v 站可能显示不出来):a b c
    在 sublime 里面显示 a<0x01>b<0x01>c<0x02>
    hex 显示 6101 6201 6302
    拷贝到 idea 字符串就是 String s = "a\u0001b\u0001c\u0002"

    去询问了用户,用户也只是在 word 上或者网页上拷贝一段文字,不是恶意行为。
    想要去掉这些奇奇怪怪的东西...

    不知道大佬们有什么好的方法吗
    10 条回复    2022-12-21 11:55:47 +08:00
    CEBBCAT
        1
    CEBBCAT  
       2022-12-16 22:55:18 +08:00
    iSNN
        2
    iSNN  
    OP
       2022-12-17 09:49:46 +08:00
    @CEBBCAT 连接是 How To Remove a Character from a String in Java ,不是 how to remove non-utf8 character from a string in java 替换这些编码找不到的字符...我只是举个列子 0x01 与 0x02 。还有很多这种乱七八糟的东西...
    tramm
        3
    tramm  
       2022-12-17 09:58:38 +08:00
    charAt 一个一个字符判断 :P
    iSNN
        4
    iSNN  
    OP
       2022-12-17 10:34:58 +08:00
    @tramm 那要怎么判断呢...感觉和上面那位说 replace 的仁兄说了一样的话...现在问题不是不能替换,不是单纯的找不到,而是不知道该找什么内容。我只是举例了 0x01 与 0x02 两个编码,charAt 找到这两个替换当然简单。但是可不只是这两个,后面还有很多这种 0x 字符,这种做法工程实现上不现实吧。只存在理论上可行
    iX8NEGGn
        5
    iX8NEGGn  
       2022-12-17 14:06:09 +08:00 via iPhone
    @iSNN 你举例的看着都属于 C0 或 C1 控制字符,直接把这些替换了,之后可以排出这些控制字符,不允许提交
    myther8888
        6
    myther8888  
       2022-12-17 16:55:24 +08:00
    sublime 用正则替换下
    angryfish
        7
    angryfish  
       2022-12-17 17:21:45 +08:00
    你在 word 上复制能重现吗?
    janus77
        8
    janus77  
       2022-12-17 22:10:28 +08:00
    sublime 和 idea 的文本编码不一样?检查一下
    nieyuanhong
        9
    nieyuanhong  
       2022-12-18 03:28:58 +08:00
    感觉列举的例子有点少,你需要分析 abc 后边的奇怪字符的 ASCII 码,确定这些奇怪字符的码位范围,范围确定后就好办了,直接正则移除掉。当然如果奇怪的字符包括标点符号和英文字母以及汉字的话,就只能从前端找办法了。
    iSNN
        10
    iSNN  
    OP
       2022-12-21 11:55:47 +08:00
    看了下各位的回答,感谢各位大佬。现在的方案只能采用 找到这些奇怪的符号,再用 replace 替换。
    国内的就没找到相关的好的回答,国外倒是给出了许多正则什么的,但是我仔细看了下,试了下。
    这些正则的编码范围只是提取出欧美 字母语言的范围,排除了包括中日韩等文字。
    不过这个方案也不适合我们的场景,比较中英文或者多国语言混杂比较常见。这个正则就十分的复杂了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3326 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 04:56 · PVG 12:56 · LAX 20:56 · JFK 23:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.