gpt4 book ai didi

java - 在Java中使用正则表达式获取单数或复数字符串

转载 作者:行者123 更新时间:2023-12-02 01:27:48 29 4
gpt4 key购买 nike

我想将字符串中的变量替换为基于数字的单数/复数单词。

我尝试过使用正则表达式,但我不知道如何组合使用正则表达式和替换。

//INPUTS: count = 2; variable = "Some text with 2 %SINGMULTI:number:numbers%!"
public static String singmultiVAR(int count, String input) {
if (!input.contains("SINGMULTI")) {
return null;
}

Matcher m = Pattern.compile("\\%(.*?)\\%", Pattern.CASE_INSENSITIVE).matcher(input);
if (!m.find()) {
throw new IllegalArgumentException("Invalid input!");
}

String varia = m.group(1);

String[] varsplitted = varia.split(":");

return count == 1 ? varsplitted[1] : varsplitted[2];
}
//OUTPUTS: The input but then with the SINGMULTI variable replaced.

它现在只输出变量,而不是整个输入。我需要如何将其添加到代码中?

最佳答案

您可以使用MatchereplaceAll方法来替换匹配的字符串。

事实上,您不必拆分字符串,只需匹配正则表达式中的 : 即可:

// You don't need the "if (!input.contains("SINGMULTI"))" check either!
Matcher m = Pattern.compile("\\%SINGMULTI:(.*?):(.*?)\\%").matcher(input);

如果计数为1,则替换为组1,否则替换为组2:

// after checking m.find()
return m.replaceAll(count == 1 ? "$1" : "$2");

关于java - 在Java中使用正则表达式获取单数或复数字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56611402/

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