如何在Java中使用带有空格的Pattern.compile?

时间:2017-05-24 11:53:05

标签: java regex

我在Java中的Pattern.compile中将两个单词与它们之间的空格进行匹配时遇到问题。

我的字符串是"What is your name?"

我的代码:

String namee = "What is your name?";
Pattern pattern = Pattern.compile("What is|Address is");
if (pattern.matcher(namee).find())
{
    if (namee.equals("What is"))
    {
        namee = "name";
    }
}

如果字符串包含"What is",我想要实现的目标,那么字符串本身应该更改为"name"。但它没有空间...... ...

2 个答案:

答案 0 :(得分:0)

尝试这样(为了安全;更好的代码可读性以及恕我直言):

Pattern pattern = Pattern.compile("(What is)|(Address is)")

但以下代码感觉不对:

if (namee.equals("What is"))
...

您可能想要使用刚刚创建的java.util.regex.Matcher。例如:

Matcher matcher = pattern.matcher(namee);
if (matcher.find()) {
    if (matcher.group().equals("What is")) {
        ...
    }
}

答案 1 :(得分:0)

<强>解决方法1

您可以使用matcher.group(),然后点击Pattern pattern = Pattern.compile("What is|Address is"); Matcher matcher = pattern.matcher(namee); if (matcher.find()) { if (matcher.group().equals("What is")) { namee = "name"; } } 进行检查:

What is

<强>溶液2

如果您想检查字符串是否包含Address isif(namee.contains("What is")){ namee = "What is"; }else if (namee.contains("Address is")){ namee = "...."; } ,那么您可以轻松使用:

What is

<强> Solution3

如果您想检查字符串是以Address is还是if(namee.startsWith("What is")){ namee = "What is"; }else if (namee.startsWith("Address is")){ namee = "...."; } 开头,那么您可以使用:

$scope.$apply()