使用java在字符串中添加每个单词的字符

时间:2017-09-27 12:02:27

标签: java replace string-matching

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

所以如果字符串是:绿羊

输出应为:+ Green + sheep

3 个答案:

答案 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中获得的列表结尾。

发布逻辑/伪代码而不是发布代码总是更好 希望这会帮助你。 : - )