我试图将字符串b =“x + yi”分成两个整数x和y。
这是我原来的答案。 在这里,我用子串方法删除了尾随'i'字符:
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]));
“|”有什么特别之处吗?我查阅了文档和许多其他问题,但我找不到答案。
答案 0 :(得分:3)
split()方法采用控制拆分的正则表达式。尝试 “[+ I]”。大括号标记一组字符,在本例中为“+”和“i”。
然而,这将无法实现您的目标。你会得到一些东西“b = x”,“y”,“”。正则表达式还提供搜索和捕获功能。查看String.matches(String regex)。
答案 1 :(得分:0)
您可以使用指定的链接了解分隔符的工作方式。
How do I use a delimiter in Java Scanner?
另一种替代方式
您可以使用Scanner类的useDelimiter(String pattern)方法。使用Scanner类的useDelimiter(String pattern)方法。基本上我们使用String分号(;)来标记在Scanner对象的构造函数上声明的String。
字符串“Anne Mills / Female / 18”上有三个可能的标记,即姓名,性别和年龄。 scanner类用于拆分String并在控制台中输出令牌。
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();
}
}