使用 Java 在字符串中的每个单词前面添加字符



im 尝试获取字符串并在字符串中每个单词的前面添加 + 以自动生成关键字

所以如果字符串是:绿羊

输出应为:+绿色+绵羊

有多种选择,我将专注于一个紧凑的正则表达式答案,该答案使用匹配所有单词边界的b,甚至是像Green, sheep. Green - sheep这样的复杂单词边界。

溶液

String text = "Green, sheep. Green - sheep";
String modifiedText = text.replaceAll("\b(\p{L}+)\b", "+$1");
System.out.println(modifiedText);

哪些输出:

+Green, +sheep. +Green - +sheep

京东演示

解释

详细的解释可以在regex101#K4k42n中看到。测试正则表达式的众多好网站之一。

简而言之,我们搜索单词\p{L}(仅字母字符),其中的多个+,在单词边界内\b。然后将这些单词放入一个带有(...)的捕获组中。在replaceAll的第二个参数中,我们现在可以引用具有$的捕获组,$1对应于第一个捕获组的匹配,依此类推。

因此,我们将符号+单词替换为单词本身$1

我们首先提取所有单词,然后操纵它们,最后将它们作为句子放回原处。

// Extract words
String[] words = theString.split(" ");
// Manipulate them
for (int i = 0; i < words.length; i++) {
words[i] = "+" + words[i];
}
// Put them back as sentence
StringJoiner sj = new StringJoiner(" ");
for (String word : words) {
sj.add(word);
}
String sentence = sj.toString();

StringJoiner在每个参数(在构造函数中指定)之间添加一个" "

请注意,此方法仅适用于每个单词都由空格分隔的简单句子,而不是逗号等。

步骤:
1. 在空格的基础上拆分字符串。
2. 循环迭代。
3. 获取单个字符串并在前面添加"+",然后添加空格并将字符串添加到最后一个字符串
4.重复步骤 2 和 3,直到步骤 1 中获得的列表末尾。

发布逻辑/伪代码总是比发布代码更好。
希望这对你有帮助。

最新更新