1

我可以像这样构建字符串:

String str = "Phone number %s just texted about property %s";
String.format(str, "(714) 321-2620", "690 Warwick Avenue (679871)");

//Output: Phone number (714) 321-2620 just texted about property 690 Warwick Avenue (679871)

我想要实现的是相反的。输入将跟随字符串

电话号码 (714) 321-2620 刚刚发短信告知 690 Warwick Avenue (679871)

我想从输入中检索“ (714) 321-2620 ”和“ 690 Warwick Avenue (679871)

谁能指点一下,如何在Java或Android中实现这一点?

先感谢您。

4

2 回答 2

7

使用正则表达式:

String input = "Phone number (714) 321-2620 just texted about property 690 Warwick Avenue (679871)";
Matcher m = Pattern.compile("^Phone number (.*) just texted about property (.*)$").matcher(input);
if(m.find()) {
  String first = m.group(1); // (714) 321-2620
  String second = m.group(2); // 690 Warwick Avenue (679871)
  // use the two values
}

完整的工作代码:

import java.util.*;
import java.lang.*;
import java.util.regex.*;

class Main
{
  public static void main (String[] args) throws java.lang.Exception
  {
    String input = "Phone number (714) 321-2620 just texted about property 690 Warwick Avenue (679871)";
    Matcher m = Pattern.compile("^Phone number (.*) just texted about property (.*)$").matcher(input);
    if(m.find()) {
      String first = m.group(1); // (714) 321-2620
      String second = m.group(2); // 690 Warwick Avenue (679871)
      System.out.println(first);
      System.out.println(second);
  }
}

还有ideone上的链接。

于 2013-03-05T08:20:21.190 回答
0

这很容易,同时也很难。

基本上,您可以轻松地使用 String.split() 将字符串拆分为正则表达式或字符首次出现的部分。

但是,您需要有一个清晰的模式来检测电话号码和地址所在的位置。这取决于您自己对这些信息的可能性的定义。

于 2013-03-05T08:19:44.567 回答