我正在努力获得所需的输出:
555
555
5555
使用代码:
public class Split {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String phoneNumber = "(555) 555-5555";
String[] splitNumberParts = phoneNumber.split(" |-");
for(String part : splitNumberParts)
System.out.println(part);
但是不知道如何从第一个元素中删除“()”。
提前致谢。
此致
答案 0 :(得分:7)
StringTokenizer支持可以在字符串中列为第二个参数的多个分隔符。
StringTokenizer tok = new StringTokenizer(phoneNumber, "()- ");
String a = tok.nextToken();
String b = tok.nextToken();
String c = tok.nextToken();
在你的情况下,这将给出a = 555,b = 555,c = 5555。
答案 1 :(得分:4)
为什么不先替换?
String phoneNumber = "(555) 555-5555";
String cleaned = phoneNumber.replaceAll("[^0-9]",""); // "5555555555"
然后你可以使用substring来获得你想要的部分。
答案 2 :(得分:1)
如果您只想按顺序排列数字,那么您可以使用Pattern和Matcher类来查找匹配特定模式的所有子字符串,在您的情况下,{{1} }。
您需要使用Matcher#find()
方法来获取与您的模式匹配的所有子字符串。并使用Matcher#group()
打印匹配的子字符串。
以下是您的工作方式: -
\d+
答案 3 :(得分:1)
当你使用split时,java将返回一个字符串数组,该字符串与你提供的项目出现的位置分开,因此,如果你像现在这样进行拆分,你可以添加一些东西像这样:
phoneNumber.split(" |-|\\(|\\) ");
但那不是很好看,现在是吗?所以我们可以做这样的事情,它基本上告诉java删除任何不是数字的东西:
String[] splitNumberParts = phoneNumber.split("\\D+");