Searching for one string in another string

后端 未结 3 2025
执笔经年
执笔经年 2020-12-20 04:37

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 exam

相关标签:
3条回答
  • 2020-12-20 04:45

    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"
    
    0 讨论(0)
  • 2020-12-20 04:47

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

    0 讨论(0)
  • 2020-12-20 04:52

    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.

    0 讨论(0)
提交回复
热议问题