2017-07-26 123 views
0

我想把一个字符串b =“x + yi”分解成两个整数x和y。Java String使用管道'|'分割多个分隔符

这是我的原始答案。 这里我去掉末尾的“我”字与子法:

int Integerpart = (int)(new Integer(b.split("\\+")[0])); 
int Imaginary = (int)(new Integer((b.split("\\+")[1]). 
         substring(0, b.split("\\+")[1].length() - 1))); 

但是我发现,刚才下面的代码相同的工作:

int x = (int)(new Integer(a.split("\\+|i")[0])); 
int y = (int)(new Integer(a.split("\\+|i")[1])); 

是不是有什么特别的用“|”?我查了文档和许多其他问题,但我找不到答案。

+3

在正则表达式中,''''表示_or_ –

+0

如何使用或使用String? Split函数使用参数String,但(“a”|“b”)对我来说看起来不像字符串。 – Sean

+0

split方法将您传递给它的字符串解释为正则表达式。请参阅[java.lang.String](https://docs.oracle.com/javase/8/docs/api/java/lang/String.html#split-java.lang.String-) –

回答

0

您可以使用给定的链接了解定界符如何工作

How do I use a delimiter in Java Scanner?

另一种替代方式

可以使用useDelimiter(字符串模式)扫描仪类的方法。使用Scanner类的useDelimiter(String pattern)方法。基本上我们使用String分号(;)来标记在Scanner对象的构造函数中声明的字符串。

字符串“Anne Mills/Female/18”中有三个可能的标记,即姓名,性别和年龄。扫描程序类用于分割字符串并在控制台中输出令牌。

import java.util.Scanner; 

/* 
* This is a java example source code that shows how to use useDelimiter(String pattern) 
* method of Scanner class. We use the string ; as delimiter 
* to use in tokenizing a String input declared in Scanner constructor 
*/ 

public class ScannerUseDelimiterDemo { 

    public static void main(String[] args) { 

     // Initialize Scanner object 
     Scanner scan = new Scanner("Anna Mills/Female/18"); 
     // initialize the string delimiter 
     scan.useDelimiter("/"); 
     // Printing the delimiter used 
     System.out.println("The delimiter use is "+scan.delimiter()); 
     // Printing the tokenized Strings 
     while(scan.hasNext()){ 
      System.out.println(scan.next()); 
     } 
     // closing the scanner stream 
     scan.close(); 

    } 
} 
3

split()方法使用控制分割的正则表达式。尝试 “[+ i]”。大括号标记一组字符,在本例中为“+”和“i”。

但是,这不会完成你想要做的。你会以“b = x”,“y”,“”结尾。正则表达式还提供搜索和捕获功能。看看String.matches(String regex)。