gpt4 book ai didi

java - 用正则表达式匹配规则替换每个单词的第一个元音

转载 作者:行者123 更新时间:2023-11-30 06:11:34 25 4
gpt4 key购买 nike

我想将句子中单词的每个元音更改为一些阿拉伯语 unicode。我有这样的输入

each vocal of letter each word in a sentence change into unicode use substring on java

具有子字符串替换规则

String[][] replacements1 = {
{"a", "\u0627"},
{"i", "\u0627\u064A"},
{"u", "\u0627\u0648"},
{"e", "\u0627\u064A"},
{"o", "\u0627\u0648"} }

我使用空格分割成一个数组 .split(" ") ,但这没有用。我改用 charAt() ,但因为这超过 1 个字符或字符串,所以我需要使用一些正则表达式来定义子字符串 replacement[][] 的每个索引 0 ,不影响单词中的另一个元音。我怎样才能做到这一点?

输出应该是这样的:

\u0627\u064Aach vocal \u0627\u0648f letter \u0627\u064Aach word \u0627\u064An \u0627 sentence change \u0627\u064Anto unicode \u0627\u0648se substring \u0627\u0648n java"

最佳答案

使用 Matcher 根据正则表达式 "\\b([^aeiou]*)([aeiou])(\\w 查找每个单词中的所有第一个元音*)\\b"(也捕获单词的其他部分)。

使用Matcher提供的API可以轻松构建替换字符串。

String str = "each vocal of letter each word in a sentence change into unicode use substring on java";

Map<String, String> replacements = new HashMap<String, String>() {{
put("a", "\u0627");
put("i", "\u0627\u064A");
put("u", "\u0627\u0648");
put("e", "\u0627\u064A");
put("o", "\u0627\u0648");
}};

Pattern pattern = Pattern.compile("(?i)(.*?)\\b([^aeiou]*)([aeiou])(\\w*)\\b");
Matcher matcher = pattern.matcher(str);
StringBuffer buf = new StringBuffer();
while(matcher.find()) {
matcher.appendReplacement(buf, "$1$2" + replacements.get(matcher.group(3)) + "$4");
}
matcher.appendTail(buf);
String replaced = buf.toString();

上面的代码已经过测试并产生了期望的结果。

<小时/>

顺便说一句,我从替换字符串中删除了反斜杠以避免插入阿拉伯字符,这样我就可以看到逻辑有效,因为在打印从右到右的混合时很难看出发生了什么向左和从左到右的字符)。

关于java - 用正则表达式匹配规则替换每个单词的第一个元音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50133147/

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