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

使用java在字符串中的每个单词前面添加字符,java,replace,string-matching,Java,Replace,String Matching,我试着用一个字符串,在字符串中每个单词的前面加上+来自动生成关键字 因此,如果字符串是:绿羊 输出应该是:+Green+sheep我们首先提取所有单词,然后操纵它们,最后将它们作为句子放回原处 // Extract words String[] words = theString.split(" "); // Manipulate them for (int i = 0; i < words.length; i++) { words[i] = "+" + words[i]; }

我试着用一个字符串,在字符串中每个单词的前面加上+来自动生成关键字

因此,如果字符串是:绿羊


输出应该是:+Green+sheep

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

// 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中获得的列表结束

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

有多种选择,我将重点介绍一个紧凑的正则表达式答案,它使用匹配所有单词边界的\b,即使是复杂的单词边界,如Green、sheep。绿羊

解决方案 哪些产出:

+Green, +sheep. +Green - +sheep
解释 有关详细说明,请参见。许多测试正则表达式的好站点之一

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


因此,我们用符号+和单词本身$1一起替换一个单词。

String.replaceAll应该对您有所帮助。@Flown replaceAll不适用于第一个单词=s.replaceAll\\b\\pL,+1;将单词边界替换为字母。不幸的是,您的问题只包含要求-它并没有显示您自己为解决此问题所做的任何努力。请添加您的问题尝试-因为这个网站不是免费的,我们做您的家庭作业服务。除此之外:请转到第页了解如何/问什么。谢谢你们的问题是…?当一个replaceAll?replaceAll对第一个单词不起作用,因为第一个单词不包含空格,你们错了。我在上一篇评论中链接的评论显示了一个regex for replaceAll,它甚至可以用于第一个单词。也是。我认为最好同时发布逻辑和代码。@Andreas,我听说你只写了String.replaceAll方法。由于我褪色的屏幕颜色,错过了您的“可以做到”链接:-一个简单的解决方案需要复杂的代码。是的,但对于初学者来说,了解如何详细地完成这项工作确实很有帮助。@Zabuza开始阅读Java入门书籍吧。SO的目的不同-好的,更有效的解决方案是string.replace正则表达式的缺点是没有人知道发生了什么。当然它很方便,但它是一把双刃剑。对于新手程序员来说,它是一个非常方便的工具。对于初学者,我建议使用一种非常简单的手动方式,如@ihsankocak在他的回答中所示。很好的一点是,regex中的\b功能非常强大,很难手动检测复杂的边界。
+Green, +sheep. +Green - +sheep