【发布时间】:2016-04-20 09:21:21
【问题描述】:
找出句子中第 n 个单词之前的字符数的最简单方法是什么?
例如。 :
String sentence = "Mary Jane and Peter Parker are friends."
int trigger = 5; //"Parker"
输出将是
字符数 = 20
任何帮助将不胜感激。 谢谢。
【问题讨论】:
标签: java string count character
找出句子中第 n 个单词之前的字符数的最简单方法是什么?
例如。 :
String sentence = "Mary Jane and Peter Parker are friends."
int trigger = 5; //"Parker"
输出将是
字符数 = 20
任何帮助将不胜感激。 谢谢。
【问题讨论】:
标签: java string count character
最简单的方法就是循环字符串中的字符并计算空格的数量。
以下为每个字符增加一个length 变量。当遇到空白时,我们会减少要读取的剩余空白的数量,当该数量达到 1 时,这意味着我们找到了想要的单词,因此我们跳出循环。
public static void main(String[] args) {
String sentence = "Mary Jane and Peter Parker are friends.";
int trigger = 5; //"Parker"
int length = 0;
for (char c : sentence.toCharArray()) {
if (trigger == 1) break;
if (c == ' ') trigger--;
length++;
}
System.out.println(length); // prints 20
}
【讨论】:
public int getNumberOfCharacters(int nthWord){
String sentence = "Mary Jane and Peter Parker are friends.";
String[] wordArray = sentence.split(" ");
int count = 0;
for(int i=0; i<=nthWord-2 ; i++){
count = count + wordArray[i].length();
}
return count + (nthWord-1);
}`
试试这个应该可以的
【讨论】:
使用正则表达式可以这样:
public static void main(String[] args) {
String sentence = "Mary Jane and Peter Parker are friends.";
int trigger = 5;
Pattern pattern = Pattern.compile(String.format("(?:\\S+\\s+){%d}(\\S+)", trigger - 1));
Matcher matcher = pattern.matcher(sentence);
matcher.find();
System.out.println(matcher.group().lastIndexOf(" ") + 1);
}
由于可能存在重复,我正在费尽心思寻找准确的工作,而不是简单地indexOf("Parker")。
正则表达式将匹配 N 个单词而不捕获并捕获 N+1 个单词。在您的情况下,它将匹配所有先前的单词直到您想要的单词并捕获下一个单词。
【讨论】: