如何在java中查找字符串中的全字索引

时间:2017-03-06 10:17:13

标签: java string indexof lastindexof

我想找出给定字符串中整个单词的所有起始索引。 可以说我在下面给出了一个字符串。

  “古代手抄本,另一种将句子分成的手段   段落是一个换行符(换行符),后跟一个初始值   下一段的开头。初始是超大资本   字母,有时缩写超出文本边缘。这种风格可以   例如,可以在原版古英文手稿中看到   贝奥武夫。虽然不是,但英语排版仍然使用了Outdenting   常用。[4]现代英语排版通常表示新的   缩进第一行的段落“);”

我想找出“段落”的起始索引。其中不应包含“段落”,“段落”。

任何人都可以在java中了解如何做到这一点。 提前谢谢。

1 个答案:

答案 0 :(得分:3)

您可以将正则表达式与word boundaries character

一起使用
public static boolean hasRealRemovableSdCard(Context context) {
    return ContextCompat.getExternalFilesDirs(context, null).length >= 2;
}

如果你不想要"段落。" ("段落"后跟一个点),你可以尝试

String text = "an ancient manuscripts, another means to divide sentences into paragraphs was a line break (newline) followed by an initial at the beginning of the next paragraph. An initial is an oversize capital letter, sometimes outdented beyond the margin of text. This style can be seen, for example, in the original Old English manuscript of Beowulf. Outdenting is still used in English typography, though not commonly.[4] Modern English typography usually indicates a new paragraph by indenting the first line";

Matcher m = Pattern.compile("\\bparagraph\\b").matcher(text);
while (m.find()) {
    System.out.println("Matching at: " + m.start());
}

表示段落后跟空格或行尾。

如果您要查找的字符串可以包含特殊字符(例如"("),则可以使用Pattern.quote()来逃避它:

Matcher m = Pattern.compile("\\bparagraph($| )").matcher(text);