La string class tiene un numero de métodos para examinar los contenidos de un string, búsqueda de caracteres y substrings, cambio de case y otras cosas.
Obtención del índice de Caracteres y Substrings
You can get the character at a particular index within a string by invoking the charAt() accessor method. The index of the first character is 0, while the index of the last character is length()-1. For example, the following code gets the character at index 9 in a string:
String anotherPalindrome = "Niagara. O roar again!"; char aChar = anotherPalindrome.charAt(9);
Los índices comienzan en 0, por lo que el caracter de índice 9 es ‘O’, como se ve en la siguiente figura:
Si se desea obtener más de un caracter de un string, se debe utilizar el método substring. El método substring tiene dos versiones tal como se muestra en la siguiente tabla:
El método substring en la clase String
String substring(int beginIndex, int endIndex)
Returns a new string that is a substring of this string. The substring begins at the specified beginIndex and extends to the character at index endIndex – 1.
String substring(int beginIndex)
Devuelve un nuevo String desde la posición beginIndex hasta el final del String.
El siguiente código toma desde el índice 11 hasta –pero no incluido- el índex 15, palabra "roar":
String anotherPalindrome = "Niagara. O roar again!"; String roar = anotherPalindrome.substring(11, 15);
Otros métodos para manipular Strings
String[] split(String regex)
String[] split(String regex, int limit)
Searches for a match as specified by the string argument (which contains a regular expression) and splits this string into an array of strings accordingly. The optional integer argument specifies the maximum size of the returned array. Regular expressions are covered in the lesson titled "Regular Expressions."
CharSequence subsequence (int beginIndex, int endIndex)
Devuelve una nueva secuencia de caracteres construida desde beginIndex hasta endIndex
– 1.
String trim ()
Devuelve una copia del String sin espacios al principio y al final.
String toLowerCase () y String toUpperCase ()
Devuelven una copia del string con los caracteres pasados a mayúsculas y minúsculas.
Búsqueda de Caracteres y Substrings en Strings
Here are some other String
methods for finding characters or substrings within a string. The String
class provides accessor methods that return the position within the string of a specific character or substring: indexOf()
and lastIndexOf()
. The indexOf()
methods search forward from the beginning of the string, and the lastIndexOf()
methods search backward from the end of the string. If a character or substring is not found, indexOf()
and lastIndexOf()
return -1.
The String
class also provides a search method, contains
, that returns true if the string contains a particular character sequence. Use this method when you only need to know that the string contains a character sequence, but the precise location isn’t important.
The following table describes the various string search methods.
The Search Methods in the String
Class
Method
Description
int indexOf(int ch)
int lastIndexOf(int ch)
Returns the index of the first (last) occurrence of the specified character.
int indexOf(int ch, int fromIndex)
int lastIndexOf(int ch, int fromIndex)
Returns the index of the first (last) occurrence of the specified character, searching forward (backward) from the specified index.
int indexOf(String str)
int lastIndexOf(String str)
Returns the index of the first (last) occurrence of the specified substring.
int indexOf(String str, int fromIndex)
int lastIndexOf(String str, int fromIndex)
Returns the index of the first (last) occurrence of the specified substring, searching forward (backward) from the specified index.
boolean contains(CharSequence s)
Returns true if the string contains the specified character sequence.
Note: CharSequence
is an interface that is implemented by the String
class. Therefore, you can use a string as an argument for the contains()
method.
Remplazo de Caracteres y Substrings en los Strings
The String
class has very few methods for inserting characters or substrings into a string. In general, they are not needed: You can create a new string by concatenation of substrings you have removed from a string with the substring that you want to insert.
The String
class does have four methods for replacing found characters or substrings, however. They are:
Methods in the String
Class for Manipulating Strings
Method
Description
String replace(char oldChar, char newChar)
Returns a new string resulting from replacing all occurrences of oldChar in this string with newChar.
String replace(CharSequence target, CharSequence replacement)
Replaces each substring of this string that matches the literal target sequence with the specified literal replacement sequence.
String replaceAll(String regex, String replacement)
Replaces each substring of this string that matches the given regular expression with the given replacement.
String replaceFirst(String regex, String replacement)
Replaces the first substring of this string that matches the given regular expression with the given replacement.
An Example
The following class, Filename
, illustrates the use of lastIndexOf()
and substring()
to isolate different parts of a file name.
Note: The methods in the following Filename
class 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.
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); } // gets filename without extension 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); } }
Here is a program, FilenameDemo
, that constructs a Filename
object and calls all of its methods:
public class FilenameDemo { public static void main(String[] args) { final String FPATH = "/home/user/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()); } }
And here’s the output from the program:
Extension = html Filename = index Path = /home/user
As shown in the following figure, our extension
method uses lastIndexOf
to locate the last occurrence of the period (.) in the file name. Then substring
uses the return value of lastIndexOf
to 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, lastIndexOf
returns -1, and the substring method throws a StringIndexOutOfBoundsException
.
Also, notice that the extension
method uses dot + 1
as the argument to substring
. If the period character (.) is the last character of the string, dot + 1
is 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 to substring
because 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."