Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中,在输入字符串的每个单词末尾追加一个字符串_Java_String_Append_String Concatenation - Fatal编程技术网

在Java中,在输入字符串的每个单词末尾追加一个字符串

在Java中,在输入字符串的每个单词末尾追加一个字符串,java,string,append,string-concatenation,Java,String,Append,String Concatenation,我对Java比较陌生,但我正在尽最大努力掌握它 因此,在我的作业中,我被要求从用户那里获得一个输入(字符串),并在输入字符串的每个单词的末尾添加一个单词。我可能错过了一些东西,因为我想不出这么简单的东西 比如说,, 我们从用户那里得到输入 这就是我喜欢的 我希望它是: 这只猫看起来很像它 在这个问题的解决方案中,我不能使用任何if/for/while语句/循环,但是,我可以使用Java字符串类API 这是我目前掌握的代码 public class Exercise2 { public

我对Java比较陌生,但我正在尽最大努力掌握它

因此,在我的作业中,我被要求从用户那里获得一个输入(字符串),并在输入字符串的每个单词的末尾添加一个单词。我可能错过了一些东西,因为我想不出这么简单的东西

比如说,, 我们从用户那里得到输入

这就是我喜欢的

我希望它是:

这只猫看起来很像它

在这个问题的解决方案中,我不能使用任何if/for/while语句/循环,但是,我可以使用Java字符串类API

这是我目前掌握的代码

public class Exercise2 {

    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);

        System.out.println("Please enter a string : ");
        String userString = scan.nextLine();

        String inputString = "meow";

        //I'm aware that for the next like concatenating is just adding
        //the word meow with the last word of the userString.
        String newString = userString.concat(inputString);

        scan.close();
    }
}

问题:如何获得所需的输出?您可以使用
replaceAll

userString = userString + " ";
userString =userString.replaceAll("\\s+"," ");  // removing multiple spaces
userString = userString.replaceAll(" ","meow ");
要使其在最后一个单词中起作用,您需要在末尾附加
'


是的,
trim()
最早添加的最后一个空格。

这个问题已经有很多答案了,但据我所知,没有一个答案是正确的。或者它不适用于多个空间(因为每个空间都替换为
“喵”
)。或者用
“喵喵”
重新绘制多个空格-因此空格或空格丢失。或末端的空间(或没有)处理不正确

这是我的看法:

    String userString = "This is  how   I    like    it";
    System.out.println(userString.replaceAll("([^\\s])(\\s|$)", "$1meow$2"));
结果:

Thismeow ismeow  howmeow   Imeow    likemeow    itmeow
我假设“word”是由空格字符或字符串的开头或结尾分隔的非空格字符序列。“单词”的最后一个字符是非空格字符,紧跟空格字符或字符串末尾。这可以通过正则表达式
([^\s])(\s |$)
检测到。第一组将代表单词的最后一个字符,第二组-以下空格或字符串结尾

因此,为了给每个单词添加
meow
,我们可以将其插入单词的最后一个字符和字符串的后面空格/结尾之间。这就是
$1meow$2
所做的
$1
引用regex中的第一组(单词的最后一个字符),
$2
——第二组(在空格/字符串末尾之后)


喵喵。

您必须将这一字符串标记为单词,添加后缀,然后将它们重新组合在一起。你能做每一步吗?对不起,是的,基本上我如何获得所需的输出^^ ^'如何定义“单词”?在
中当然是。
课程。
(末尾有点)是一个“单词”或
课程
(没有点)。@lexicore如果你指的是标点符号,我不必担心任何标点。@GeekyMeow你应该定义“单词”是什么。用空格分隔的东西?对最后一个单词不起作用。@lexicore我们可以在末尾附加空格。如果字符串包含双空格,则不起作用。@lexicore OP没有设置这么多条件。我们可以照顾好所有这些条件。是吗?@lexicore我希望,它解决了你所有的问题?不过,离题:我必须补充一点,假设这个词也是一个单独字符串中的输入,即用户扫描的
string inputString
,在这种情况下,你将如何写下它?因为在
$1meow$2
中,
$1
$2
指的是正则表达式,并用“”括起来,如果使用变量
inputString
“$1”+inputString+”$2,则不能使用它。是的,这非常有效。谢谢!