Searching for one string in another string

丶灬走出姿态 提交于 2019-12-18 07:10:09

问题


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.


回答1:


Use the contains or indexOf methods, depending on whether you need the position.




回答2:


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

  • boolean startsWith(String prefix)
    • Tests if this string starts with the specified prefix.
  • boolean endsWith(String suffix)
    • Tests if this string ends with the specified suffix.
  • boolean contains(CharSequence s)
    • Returns true if and only if this string contains the specified sequence of char values.
  • int indexOf(String s)
    • Returns the index within this string of the first occurrence of the specified substring.
      • -1 if there's no occurrence

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"



回答3:


If you know how to search a String inside another String, you would know how to loop in a String table. You could use indexOf as someone else has suggested or you could use regex if it more complex.



来源:https://stackoverflow.com/questions/2940114/searching-for-one-string-in-another-string

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!