gpt4 book ai didi

java - 将零替换为单词中的字母 "o"

转载 作者:搜寻专家 更新时间:2023-11-01 02:37:23 25 4
gpt4 key购买 nike

在 ocr 识别之后,我有很多单词,而不是 o 我有 0。所以我想替换 inside 单词中的任何零。

到目前为止我只能做以下事情

String result ="I don't like th0se books";
result = result.replaceAll("\\w+0\\w*", "o");
System.out.println("RESULT:" + result);

我的代码返回 RESULT:I don't like o books 但我需要 RESULT:I don't like those books。谁能说说怎么做?

最佳答案

使用非单词边界:

result = result.replaceAll("\\B0|0\\B", "o");

这确保在 0 之前或之后至少有一个单词字符。

如果你想防止数字中的零被替换:

result = result.replaceAll("\\b(?!\\d+\\b)(?:0\\B|([^\\W0]+)0)|\\G(?!\\A)0", "$1o");

详情:

\\b              # a word boundary
(?!\\d+\\b) # negative lookahead: not followed by an integer
(?:
0\\B # zero and a non-word boundary (means a word character follows)
|
([^\\W0]+)0 # word characters without zero and a zero
)
|
\\G(?!\\A)0 # a zero contiguous to a previous match (not at the start of the string)

(显然,正则表达式模式无法区分孤立的“0”和孤立的“o”,或引用数字中的“0”和“o”,或科学记数法)


其他方式:捕获所有对手

result = result.replaceAll("((?>(?:[\\W_]+|\\pL+|\\b\\d+\\b)*))(?:\\B0|0\\B)", "$1o");

关于java - 将零替换为单词中的字母 "o",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44627208/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com