Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.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_Regex_Pattern Matching - Fatal编程技术网

Java 删除特定子字符串之前的空格

Java 删除特定子字符串之前的空格,java,regex,pattern-matching,Java,Regex,Pattern Matching,我想regex可以帮我 假设我有字符串什么是foo。福在哪里。福怎么样。为什么是福?什么时候?一起吃吧。lol foo 如何删除每个foo之前的空格?我会尝试用空字符串替换空格,或者抓取“What is”并将其作为“Whatis”放入新字符串中。但是我以前从未使用过Java,所以我不知道它是否与C#的工作原理相同。您需要它来做什么 你可以用“What”替换所有出现的“What”,空间就消失了。您可以通过每个支持简单替换的texteditor实现这一点 更新: 在Java中,您可以执行以下操作:

我想regex可以帮我

假设我有字符串
什么是foo。福在哪里。福怎么样。为什么是福?什么时候?一起吃吧。lol foo


如何删除每个
foo
之前的空格?

我会尝试用空字符串替换空格,或者抓取“What is”并将其作为“Whatis”放入新字符串中。但是我以前从未使用过Java,所以我不知道它是否与C#的工作原理相同。

您需要它来做什么

你可以用“What”替换所有出现的“What”,空间就消失了。您可以通过每个支持简单替换的texteditor实现这一点

更新: 在Java中,您可以执行以下操作:

str = str.replaceAll("What ", "What");
有关‘富’的最新消息 你可以很容易地将其应用于任何事情

String str = "What is foo. Where is foo. How is foo. Why foo? When foo? together foo. lol foo";
str = str.replaceAll(" foo", "foo");
System.out.println(str);
将输出

What isfoo. Where isfoo. How isfoo. Whyfoo? Whenfoo? togetherfoo. lolfoo

也许你在寻找这样的东西:

"What is your name".replaceAll("(What) (\\w+)", "$1$2")
它将以“What”后跟一个空格,后跟一些单词(可以是任何东西,例如示例中的“is”),
并替换为两个串联的单词,中间没有空格。

您可以执行以下操作:

public String replaceSpaceBefore( String sentence, String word ) {


     return sentence.replaceAll(" " + word, word);


}

在您的示例中,参数“word”将是“is”,而“句子”将是“what is your name”。

使用字符串库。首先找到“你的名字”的位置(字符索引)。抓取从字符串开始到该点的子字符串(这样您将只剩下“What is”)。修剪以删除尾随空格,然后调用String.replace(“,”)以删除两个单词之间的空格。然后不管“是”是什么,这都会起作用

您是否尝试过使用方法
publicstringreplacefirst(stringregex,stringreplacement)

使用此功能,您可以执行以下操作:

Str.replaceFirst(“\s”和“)


我不知道怎么读你的问题,但我的解释是在第一个和第二个单词之间去掉一个空格

public class Junk {

    public static void main(String[] args) {
        String[] strings = {
              "What is the name of your cat?",
              "Who are all these people?",
              "How do I code things?",
              "I'm not feeling well.",
              "Don't"
        };

        Junk junk = new Junk();

        for(String s : strings){
            System.out.println(junk.removeSpaceBefore(s));
        }
    }

    public String removeSpaceBefore(String full){
        // Use capturing groups. $1=First group.  $2=Second Group
        return full.replaceFirst("(\\w+)\\s(.+)","$1$2");
    }
}
以及输出

Whatis the name of your cat? Whoare all these people? Howdo I code things? I'mnot feeling well. Don't 你的猫叫什么名字? 这些人都是谁? 如何编写代码? 我感觉不舒服。
不知道我该怎么做?我对此一无所知。我使用了替换和其他方法。但这是另一种情况。我想我必须研究模式匹配。但我不确定。假设我们在
foo
之前删除空格,那么
的“data foo foobar”
的结果应该是什么?它应该是
“datafoo foobar”
还是
“datafoobar”
?如果字符串中包含单词
,则该怎么办?使用您的解决方案,OP还将删除此单词前的空格。这里缺少一件事:然后需要更多的解决方法,但OP只是用一个简单的例子问了一个简单的问题。Aadam,它不会改变答案,因为
replaceAll
将对所有发生的事件执行此任务。哦,天哪。我试过所有的方法,但不是用别的方法。这真的很简单。谢谢你all@Aadam例如,你的
word
可以是
U.S.A
A*
A+b