使用\ t regex和扫描仪输入

时间:2017-02-01 15:23:29

标签: java arrays regex string split

String[] splitUp = line.split("\t");

这是代码,字符串是"John Doe 3.30 23123123" 问题出在Doe的末尾,在3.30之后,这些空间实际上是标签。现在我必须通过选项卡拆分此字符串,并且\ t和\ t不能正常工作。帮助

这是更多代码:

while(scan.hasNextLine()){


          String line = scan.nextLine();
          String[] splitUp = line.split("\\t");
          for(int i = 0; i < splitUp.length; i++){
              System.out.println(splitUp[i]);
          }

}

我有一个文本文件,它带有标签行。

答案:

如果使用java编译器IntelliJ编辑.txt文件,则它会用相应的空格量替换\ t char,因此您无法检查\ t因为它不存在。你必须在常规文本编辑器中编辑它,一切都会很好。

2 个答案:

答案 0 :(得分:0)

在java中,您需要\\t来转义\

以下代码有效:

String test="asd    asd asd xsdv";
String[]t=test.split("\\t");
for(String st : t){
    System.out.println(st);
}

输出是:

asd
asd
asd xsdv

答案 1 :(得分:0)

您可以使用它然后保存每个组=&gt;阵列

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

final String regex = "(\\w+\\s\\w+|\\d+.\\d+)";
final String string = "John Doe 3.30    23123123";

final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
final Matcher matcher = pattern.matcher(string);

while (matcher.find()) {
    System.out.println("Full match: " + matcher.group(0));
    for (int i = 1; i <= matcher.groupCount(); i++) {
        System.out.println("Group " + i + ": " + matcher.group(i));
    }
}

输入:

John Doe    3.30    23123123

输出:

John Doe
3.30
23123123

请参阅:https://regex101.com/r/Us6G3X/1