gpt4 book ai didi

java - Java 中的全部替换

转载 作者:行者123 更新时间:2023-12-01 18:06:43 25 4
gpt4 key购买 nike

我正在使用WordsUtils将单词大写

由于我无法定义哪些单词应该大写,因此我必须在 Capitalize 函数之后进行另一个实现,以将某些单词小写。

应该小写的单词是:["da, de, di, do, du, das, des, dis, dos, dus"]

所以,我现在的代码是:

public static String capitalize(String word) {
String newWord = WordUtils.capitalizeFully(word);
newWord = newWord.replaceAll("\\b([d|D][a-zA-Z]{1,2})\\b", "$1").toLowerCase();
return newWord;
}
  • 输入示例:

    1. 何塞·达斯·西尔瓦
    2. 豪尔赫·德保罗
    3. 玛利亚·达斯·保拉斯

问题在于,replaceAll 将每个单词都小写,而不仅仅是与 Pattern 匹配的介词。

最佳答案

没有第三方库的Java8解决方案:

public static void main(String[] args) {
String str = "hello mY dEAr friends";
Set<String> ban = new HashSet<>(Arrays.asList("my", "dear"));
String result = Arrays.stream(str.split("\\s"))
.map(s -> capitalize(s, ban))
.collect(Collectors.joining(" "));
System.out.println(result);
}

static String capitalize(String s, Set<String> ban) {
String lc = s.toLowerCase();
return ban.contains(lc) ? lc
: Character.toUpperCase(s.charAt(0)) + s.substring(1).toLowerCase();
}

关于java - Java 中的全部替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35828592/

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