在Java

时间:2017-04-13 09:49:29

标签: java string split

我正在尝试按".,:;()[]"'\/!? "个字符拆分输入,并将这些字词添加到列表中。我尝试了.split("\\W+?").split("\\W"),但他们都在列表中返回空元素。

此外,我已经尝试.split("\\W+"),它只返回没有任何特殊字符的单词(例如,如果其中一个输入单词是“C#”),它会写入“C”列表)。最后,我还尝试将所有特殊字符放在.split()方法中:.split("\\.,:;\\(\\)\\[]\"'\\\\/!\\? "),但这根本不是分割输入。有人可以提出建议吗?

1 个答案:

答案 0 :(得分:1)

split()函数接受正则表达式。

这不是您正在寻找的正则表达式.split("\\.,:;\\(\\)\\[]\"'\\\\/!\\? ")

尝试创建像[.,:;()\[\]'\\\/!\?\s"]这样的字符类,并添加+以匹配一个或多个出现。

我还建议使用通用更改字符空间\s\t采用.split("[.,:;()\\[\\]'\\\\\\/!\\?\\s\"]+") 等所有空间变体。

如果你确定你选择作为分割符的字符列表,那么这应该是正确的分割,并使用@Andreas建议的正确的Java字符串文字:

Window/Preferences

BTW:我找到了一个特别有用的eclipse编辑器选项escapes the string when you're pasting them into the quotes。转到Java/Editor/Typing/,在Escape text when pasting into a string literal下,选中import java.util.*; public class Calculator { public static void main(String[] args) { double n1, n2; String operation; Scanner scan = new Scanner(System.in); System.out.println("Enter the first number: "); n1 = scan.nextDouble(); System.out.println("Enter second number: "); n2 = scan.nextDouble(); Scanner op = new Scanner(System.in); System.out.println("Enter +,-,/: "); operation = op.next(); switch (operation) { case "+": System.out.println("Your answer is " + (n1 + n2)); break; case "-": System.out.println("Your answer is " + (n1 - n2)); break; case "/": System.out.println("Your answer is " + (n1 / n2)); break; case "*": System.out.println("Your answer is " + (n1 * n2)); break; default: System.out.println("You are finished"); } } }

旁边的框