拆分忽略Java中字符的句子

时间:2015-08-29 18:53:50

标签: java string loops split

我想编写一个程序,读取一行输入文本,打破将其翻译成单词。

(解决方案) 单词应该每行输出一个。一个单词被定义为一系列字母。

输入中不是字母的任何字符都应该被丢弃。

例如,如果用户输入以下行:

He said, "That’s not a good idea."

然后程序的输出应为:

He
said
That
‘s
not
a
good
idea

2 个答案:

答案 0 :(得分:2)

只需使用正则表达式

    Pattern pattern = Pattern.compile("[\\w'’]+");
    Matcher matcher = pattern.matcher("He said, \"That’s not a good idea.\"");
    while (matcher.find())
        System.out.println(matcher.group());

答案 1 :(得分:0)

试试这个:

public class Main {
    public static void main(String[] args) {
        Scanner stdIn = new Scanner(System.in); // user input
        String line = stdIn.nextLine(); // read line
        String[] words = line.split("[^a-zA-Z]+"); // split by all non-alphabetic characters (a regex)
        for (String word : words) { // iterate through the words
            System.out.println(word); // print word with a newline
        }
    }
}

它不会在令牌's中包含撇号,但我不知道你为什么要包括它。毕竟,这不是一封信,我读了你的第一句粗话。我希望这些评论有助于解释它是如何工作的。将有一个尾随空行,但如果你真的需要,那么你应该很容易修复。