问题
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.
- Returns
- int indexOf(String s)
- Returns the index within this string of the first occurrence of the specified substring.
-1
if there's no occurrence
- Returns the index within this string of the first occurrence of the specified substring.
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