Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java从字符串中逐字读取 我有一根绳子,我会考虑每一个字。例如: "That's a good question"_Java_String_Split - Fatal编程技术网

Java从字符串中逐字读取 我有一根绳子,我会考虑每一个字。例如: "That's a good question"

Java从字符串中逐字读取 我有一根绳子,我会考虑每一个字。例如: "That's a good question",java,string,split,Java,String,Split,我需要详细阐述每一个词: That, s, a, good, question 我不需要保存它们,我只需要读一个单词 我正在测试此解决方案: String s = "That's a good question"; String[] words = s.split("\\s+"); for (int i = 0; i < words.length; i++) { words[i] = words[i].replaceAll("[^\\w]", ""); } String s=

我需要详细阐述每一个词:

That, s, a, good, question
我不需要保存它们,我只需要读一个单词

我正在测试此解决方案:

String s = "That's a good question";
String[] words = s.split("\\s+");
for (int i = 0; i < words.length; i++) {
     words[i] = words[i].replaceAll("[^\\w]", "");
}
String s=“这是个好问题”;
字符串[]字=s.split(\\s+);
for(int i=0;i

但是我不知道我需要用什么正则表达式来区分两个不同的单词中的“That's”。

如果您要寻找正则表达式来匹配撇号,可以使用这个 获取包含它的整个字符串

.*["'].*
这是撇号本身

["']

这应该行得通。在通过split方法运行前,用第二个单词替换

s.replaceALL("\'s", " is");
String[] words = s.split("\\s+");

这也将其更改为“That,is”如果这是你想要做的事

如果我没有误解你,这就是你想要的-更改
String[]words=s.split(\\s+)带有
String[]words=s.split([\\s']) 

你完全确定你需要考虑<代码> > <代码>两个单词吗?(即

通常,我认为在英语中,
被算作一个单词

但是如果你对需求的看法是正确的,那么你就有一个(中等)困难的问题:我认为没有任何(合理的)正则表达式能够区分像
那样的
(收缩
那样的
)和像
那样的steve的
(所有格)

恐怕你得自己写点东西了

建议:看看这个。您可以使用它来列举需要以特殊方式处理的事情

基本示例 注意:此示例通过将整个输入转换为小写来处理大小写敏感性,因此
enum
中的元素将匹配。如果这对你不起作用,你可能需要用另一种方式来处理它


我不清楚一旦你有了这些单词,你需要做什么,所以我省略了这一部分。

错了,这个解决方案将返回以下[“单词是”、“单词2”…]他需要[“单词”、“是”、“单词2”…],然后再通过拆分方法运行它**我想你正在寻找一个语言算法,例如,这个短语“母亲之家”不等于“母亲之家”。现在,如果你对每个以“s”结尾的单词的解都等于“单词后面跟着“is”,那么你可以用“is”替换每个“s”,然后执行拆分。两者之间没有区别options@Sam现在在
[…]里面有
+
不表示“一个或多个”量词,它是简单的文字,因此您可能需要删除它。
enum Contraction {
    AINT("ain't", "is not"),
    ARENT("aren't", "are not"),
    // Many, many in between...
    YOUVE("you've", "you have");

    private final String oneWord;
    private final String twoWords;

    private Contraction(String oneWord, String twoWords) {
        this.oneWord = oneWord;
        this.twoWords = twoWords;
    }

    public String getOneWord() {
        return oneWord;
    }

    public String getTwoWords() {
        return twoWords;
    }
}

String s = "That's a good question".toLowerCase();
for (Contraction c : Contraction.values()) {
    s = s.replaceAll(c.getOneWord(), c.getTwoWords())
}
String[] words = s.split("\\s+");
// And so forth...