gpt4 book ai didi

java - 在 String Java 中用全名替换所有特殊字符的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-04 08:40:32 26 4
gpt4 key购买 nike

我想将字符串中的所有特殊字符转换为它们的全名。
示例:
输入:什么是堆栈溢出?
输出:什么是堆栈溢出问号
我用过 replaceall()这样做,但是有没有更简单的方法来做到这一点,因为我必须为每个特殊字符写一行?

text = text.replaceAll("\\.", " Fullstop ");
text = text.replaceAll("!", " Exclamation mark ");
text = text.replaceAll("\"", " Double quote ");
text = text.replaceAll("#", " Hashtag ");
...

最佳答案

这里的一种方法是维护一个包含所有符号及其名称替换的哈希图。然后,对输入字符串进行正则表达式迭代并进行所有替换。

Map<String, String> terms = new HashMap<>();
terms.put(".", " Fullstop ");
terms.put("!", " Exclamation mark ");
terms.put("\"", " Double quote ");
terms.put("#", " Hashtag ");

String input = "The quick! brown #fox \"jumps\" over the lazy dog.";
Pattern pattern = Pattern.compile("[.!\"#]");
Matcher matcher = pattern.matcher(input);
StringBuffer buffer = new StringBuffer();
while (matcher.find()) {
matcher.appendReplacement(buffer, terms.get(matcher.group(0)));
}
matcher.appendTail(buffer);

System.out.println("input: " + input);
System.out.println("output: " + buffer.toString());
这打印:
input:  The quick! brown #fox "jumps" over the lazy dog.
output: The quick Exclamation mark brown Hashtag fox Double quote jumps Double quote over the lazy dog Fullstop
上述方法看起来有点冗长,但实际上所有核心替换逻辑都发生在一行 while 中。环形。如果您使用的是 Java 8,您还可以使用 Matcher流方法,但逻辑或多或少是相同的。

关于java - 在 String Java 中用全名替换所有特殊字符的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64587192/

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