【问题标题】:Java : How to remove all characters in String except a a-z,digits and German charactersJava:如何删除字符串中的所有字符,除了 a-z、数字和德语字符
【发布时间】:2017-02-28 12:31:39
【问题描述】:

我正在开发一个 Spring-MVC 应用程序,我们目前正在其中集成 OCR 功能。 OCR 习惯于在错误检测和背景中有图像时使用通配符。处理图像后,我们有相当好的数据可用,但仍然存在一些错误。我们想按如下方式处理输出

  1. 从输出字符串中删除所有单个字符。
  2. 删除除 A-Z、a-z、德语字符(即 äöü、ÄÖÜ、ß)以外的所有字符。
  3. 空格和数字应保持不变。

代码:

  File imageFile = new File(fileLocation);

            BufferedImage img  = ImageIO.read(imageFile);
            BufferedImage blackNWhite = new BufferedImage(img.getWidth(),img.getHeight(),BufferedImage.TYPE_BYTE_BINARY);
            Graphics2D graphics = blackNWhite.createGraphics();
            graphics.drawImage(img, 0, 0, null);
            String blackAndWhiteImage =  zipLocation + String.valueOf(new BigInteger(130, random).toString(32))+".png";
            File outputfile = new File(blackAndWhiteImage);
            ImageIO.write(blackNWhite, "png", outputfile);

            ITesseract instance = new Tesseract();
            // Point to one folder above tessdata directory, must contain training data
            instance.setDatapath("/usr/share/tesseract-ocr/");
            // ISO 693-3 standard
            instance.setLanguage("deu");
            String result = instance.doOCR(outputfile);
            //System.out.println(result);
             result = result.replaceAll("\\P{ASCII}","");
            System.out.println("Result is "+result);
            return result;

谢谢。

更新

正则表达式留下的通配符:

 |
| '(°Ul") 
_} °
=# '
( )
...................................__+_......_._._.__._._._+._._.

【问题讨论】:

  • 正则表达式为[öÖäÄüÜßa-zA-Z]

标签: java regex parsing


【解决方案1】:

广告。 1.
result.replaceAll("\\s[a-zA-ZöÖäÄüÜß]\\s", "");
广告。 2.
result.replaceAll("[^a-zA-ZöÖäÄüÜß]", "");

【讨论】:

  • 我认为第 1 步也应该删除数字,并保留其中一个空格。 \\s[a-zA-Z\döÖäÄüÜß]\b 之类的东西也可以在最后一个字符后没有空格的句子末尾起作用。
  • 谢谢,我不想删除数字。我应该使用第二还是第一?谢谢。
  • @WeareBorg 你必须同时使用它们。这是一个两步的过程。
  • @xenteros first regex 不适用于例如。 "a b c" - 它只会删除 "b"。
  • 它也删除了数字和空格。我不想删除数字和空格。创建这样的帖子时我的错误,已编辑。谢谢。
【解决方案2】:

这是我最终用来解决这个问题的正则表达式:

result = result.replaceAll("[^a-zA-Z0-9öÖäÄüÜß@\\s]", "");

谢谢。

【讨论】:

    猜你喜欢
    • 2011-04-25
    • 1970-01-01
    • 2015-08-29
    • 2018-07-22
    • 2013-01-19
    • 2018-12-28
    • 2017-01-19
    • 2011-10-19
    • 2010-11-04
    相关资源
    最近更新 更多