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...