我试图获取一个字符串并在字符串中添加每个单词的+前面以自动生成关键字
所以如果字符串是:绿羊
输出应为:+ Green + sheep
答案 0 :(得分:2)
有多种选择,我将重点关注紧凑的正则表达式答案,该答案使用匹配所有字边界的\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
<强> JDoodle Demo 强>
可以在regex101#K4k42n看到详细解释。测试正则表达式的众多优秀网站之一。
简而言之,我们在单词边界\\p{L}
内搜索单词+
(仅限字母字符),其中的多个\\b
。然后将这些单词放入(...)
的捕获组中。在replaceAll
的第二个参数中,我们现在可以参考使用$
捕获组,$1
对应于第一个捕获组的匹配,依此类推。
因此,我们将符号+
替换为单词本身$1
。
答案 1 :(得分:0)
我们首先提取所有单词,然后操纵它们,最后将它们作为句子放回去。
// 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
在每个参数之间添加" "
(在构造函数中指定)。
请注意,此方法仅适用于简单句子,其中每个单词都由空格分隔,而不是逗号, dots < / em>,等等。
答案 2 :(得分:0)
步骤:
1.根据空格分割字符串。
2.循环迭代。
3.获取单个字符串并在之后添加“+”infront,并将字符串添加到最终字符串
4.重复步骤2和3,直到步骤1中获得的列表结尾。
发布逻辑/伪代码而不是发布代码总是更好 希望这会帮助你。 : - )