Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
284 views
in Technique[技术] by (71.8m points)

java - Searching for one string in another string

Let's say I have String Table that have a few strings (like mother, father, son) and now in this String Table I want to find every word that contains string "th" for example.

How should I do it? Method string.equals(string) won't help here.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

The following snippet should be instructive:

String[] tests = {
        "father",
        "mammoth",
        "thumb",
        "xxx",
};

String fmt = "%8s%12s%12s%12s%12s%n";
System.out.format(fmt,
    "String", "startsWith", "endsWith", "contains", "indexOf");

for (String test : tests) {
    System.out.format(fmt, test,
        test.startsWith("th"),
        test.endsWith("th"),
        test.contains("th"),
        test.indexOf("th")
    );
}

This prints:

  String  startsWith    endsWith    contains     indexOf
  father       false       false        true           2
 mammoth       false        true        true           5
   thumb        true       false        true           0
     xxx       false       false       false          -1

String API links


Finding indices of all occurrences

Here's an example of using indexOf and lastIndexOf with the startingFrom argument to find all occurrences of a substring within a larger string, forward and backward.

String text = "012ab567ab0123ab";

// finding all occurrences forward
for (int i = -1; (i = text.indexOf("ab", i+1)) != -1; ) {
    System.out.println(i);
} // prints "3", "8", "14"      

// finding all occurrences backward     
for (int i = text.length(); (i = text.lastIndexOf("ab", i-1)) != -1; ) {
    System.out.println(i);
} // prints "14", "8", "3"

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...