|
|
Start of Tutorial > Start of Trail > Start of Lesson |
Search
Feedback Form |
TheStringclass provides two accessor methods that return the position within the string of a specific character or substring:indexOfandlastIndexOf. TheindexOfmethod searches forward from the beginning of the string, andlastIndexOfsearches backward from the end of the string. The following table describes the various forms of theindexOfandlastIndexOfmethods.
The indexOfandlastIndexOfMethods in theStringClassMethod Description int indexOf(int)
int lastIndexOf(int)Returns the index of the first (last) occurrence of the specified character. int indexOf(int, int)
int lastIndexOf(int, int)Returns the index of the first (last) occurrence of the specified character, searching forward (backward) from the specified index. int indexOf(String)
int lastIndexOf(String)Returns the index of the first (last) occurrence of the specified string. int indexOf(String, int)
int lastIndexOf(String, int)Returns the index of the first (last) occurrence of the specified string, searching forward (backward) from the specified index. The
StringBufferandStringBuilderclasses does not support theindexOfor thelastIndexOfmethods. If you need to use these methods on such an object, first convert the string buffer to a string by using itstoStringmethod.The following class,
Filename, illustrates the use of
lastIndexOfandsubstringto isolate different parts of a file name.
Note: The methods in the followingFilenameclass don't do any error checking and assume that their argument contains a full directory path and a filename with an extension. If these methods were production code they would verify that their arguments were properly constructed.Here's a small program that constructs a// This class assumes that the string used to initialize // fullPath has a directory path, filename, and extension. // The methods won't work if it doesn't. public class Filename { private String fullPath; private char pathSeparator, extensionSeparator; public Filename(String str, char sep, char ext) { fullPath = str; pathSeparator = sep; extensionSeparator = ext; } public String extension() { int dot = fullPath.lastIndexOf(extensionSeparator); return fullPath.substring(dot + 1); } public String filename() { int dot = fullPath.lastIndexOf(extensionSeparator); int sep = fullPath.lastIndexOf(pathSeparator); return fullPath.substring(sep + 1, dot); } public String path() { int sep = fullPath.lastIndexOf(pathSeparator); return fullPath.substring(0, sep); } }Filenameobject and calls all of its methods:And here's the output from the program:public class FilenameDemo { public static void main(String[] args) { final String FPATH = "/home/mem/index.html"; Filename myHomePage = new Filename(FPATH, '/', '.'); System.out.println("Extension = " + myHomePage.extension()); System.out.println("Filename = " + myHomePage.filename()); System.out.println("Path = " + myHomePage.path()); } }As shown in the following figure, ourExtension = html Filename = index Path = /home/memextensionmethod useslastIndexOfto locate the last occurrence of the period (.) in the file name. Thensubstringuses the return value oflastIndexOfto extract the file name extension—that is, the substring from the period to the end of the string. This code assumes that the file name has a period in it; if the file name does not have a period,lastIndexOfreturns -1, and the substring method throws aStringIndexOutOfBoundsException.Also, notice that the
extensionmethod usesdot + 1as the argument tosubstring. If the period character (.) is the last character of the string,dot + 1is equal to the length of the string, which is one larger than the largest index into the string (because indices start at 0). This is a legal argument tosubstringbecause that method accepts an index equal to but not greater than the length of the string and interprets it to mean "the end of the string."
|
|
Start of Tutorial > Start of Trail > Start of Lesson |
Search
Feedback Form |
Copyright 1995-2005 Sun Microsystems, Inc. All rights reserved.