如何在java中将数字与字符串分开?

时间:2013-11-20 07:32:17

标签: java regex

我有一个由char和integer组成的字符串。例如,

Business Call Numbers:
US Toll Free 1-009-123-8924
UK Toll Free 08081234567
India Toll Free 180012345678
Chennai Number 044222
Bangalore Number 0802214434
Conference Bridge 4542316572

现在我想在免费后获取数字并将其存储在一个数组中,其他数字存储在另一个数组中。我很清楚它可以很容易地完成但是,我不知道使用哪种方法?正则表达式(indexof(),contains(),matches()等)。

任何人都可以分享您的经历吗?

5 个答案:

答案 0 :(得分:1)

根据您的输入

尝试在输入中使用lastIndexOf(" ");方法。

它会返回您所需要的最后一个空格的位置。

然后你可以获得下一个字符串,这是你的电话号码。

public class Test {
public static void main(String[] args) {
    String str1 = "US Toll Free 1-009-123-8924";

    int pos = str1.lastIndexOf(" ");
    String s[] = str1.subString(pos); //kind of
    //your s[1] is what you need 
}
}

答案 1 :(得分:1)

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test {
    public static void main(String[] args) {
        String str1 = "US Toll Free 1-009-123-8924  UK Toll Free 08081234567  India Toll Free 180012345678 ";
        String numPattern = "\\d[-\\d]*\\d";

        Pattern pattern = Pattern.compile(numPattern);
        Matcher matcher = pattern.matcher(str1);
        while (matcher.find()) {
            System.out.println(matcher.group());
        }
    }
}

免费后的电话号码

 String str1 = "US Toll Free 1-009-123-8924  UK Toll Free 111  UK Toll sime 222 India Toll Free 333 ";
        String numPattern = "(toll free )\\d[-\\d]*\\d";

        Pattern pattern = Pattern.compile(numPattern);
        Matcher matcher = pattern.matcher(str1.toLowerCase());
        while (matcher.find()) {
            System.out.println(matcher.group().replace("toll free ", ""));
        }

答案 2 :(得分:0)

您可以使用Pranalee所示的Pattern / Matcher,但请使用此正则表达式“[0-9 - ] +”。

答案 3 :(得分:0)

使用示例数字,看起来数字中没有空格并且也位于一行的末尾,因此您可以使用.split(“”),它将使用空格作为分隔符。

String a = "US Toll Free 1-009-123-8924";
String[] b = a.split(" ");
String number = b[b.length-1];
if(b.length>2){
    String sToCheck = b[b.length-3] + " " + b[b.length-2];
    if(sToCheck.equals("Toll Free")){
        //Add to the toll free array
    }
}else{
    //Add to the non toll free array
}

答案 4 :(得分:0)

尝试,

public static void main(String[] args) {
        String str1 = "US Toll Free 1-009-123-8924 ABC";
        String str2 = "UK Toll Free 08081234567 ABC";
        String str3 = "India Toll Free 180012345678";
        String str4 = "India Toll Free 180012345678";

        if(str1.contains("Toll Free") || str1.contains("store") ){
           //Store it one array
        }
        else{
          //Use other array.
        }   
        System.out.println(getMatch(str1));
        System.out.println(getMatch(str2));
        System.out.println(getMatch(str3));
        System.out.println(getMatch(str4));

    }

    private static String getMatch(String input) {
       return input.replaceAll("[a-zA-Z ]+","");
    }