我正在尝试按".,:;()[]"'\/!? "
个字符拆分输入,并将这些字词添加到列表中。我尝试了.split("\\W+?")
和.split("\\W")
,但他们都在列表中返回空元素。
此外,我已经尝试.split("\\W+")
,它只返回没有任何特殊字符的单词(例如,如果其中一个输入单词是“C#”),它会写入“C”列表)。最后,我还尝试将所有特殊字符放在.split()
方法中:.split("\\.,:;\\(\\)\\[]\"'\\\\/!\\? ")
,但这根本不是分割输入。有人可以提出建议吗?
答案 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");
}
}
}