String类提供了许多从String对象中截取字符的方法。下面逐一介绍。尽管在一个String对象中构成字符串的字符不能像字符数组一样被索引,许多字符串(String)方法利用下标(或偏移)对字符串进行操作。和数组一样,字符串下标从0开始。
charAt( )
为了从一个字符串(String)中截取一个字符,可以通过charAt( )方法直接引用单个字符。其一般形式如下:
char charAt(int where)
这里,where是想要得到的字符的下标。where的值必须是非负的,它指定了在字符串中的位置。charAt( )方法返回指定位置的字符。例如:
char ch;
ch = "abc".charAt(1);
将“b”赋给ch。
getChars( )
如果想一次截取多个字符,可以使用getChars( )方法。它有如下的一般形式:
void getChars(int sourceStart, int sourceEnd, char target[ ], int targetStart)
这里sourceStart指定了子字符串开始的下标,sourceEnd指定了子字符串结束的下一个字符的下标。因此子字符串包含了从sourceStart到sourceEnd–1的字符。获得字符的数组由target所指定。将被复制子字符串于其中的target的下标由targetStart指定。
注意必须确保的是数组target应该足够大以保证能容纳被指定子字符串中的字符。
下面的程序说明了getChars( )方法:
class getCharsDemo {
public static void main(String args[]) {
String s = "This is a demo of the getChars method.";
int start = 10;
int end = 14;
char buf[] = new char[end - start];
s.getChars(start, end, buf, 0);
System.out.println(buf);
}
}
该程序的输出如下所示:
demo
getBytes( )
有一种称为getBytes( )的方法,它是实现将字符存放于字节数组中的getChars( )方法的替代,它使用平台提供的默认的字符到字节的转换。下面是它的最简单形式:
byte[ ] getBytes( )
也可使用getBytes( )方法的其他形式。在将字符串(String)值输出到一个不支持16位Unicode编码的环境时,getBytes( )是最有用的。例如,大多数Internet协议和文本文件格式在文本交换时使用8位ASCII编码。
toCharArray( )
如果想将字符串(String)对象中的字符转换为一个字符数组,最简单的方法就是调用toCharArray( )方法。对应整个字符串,它返回一个字符数组。其一般形式为:
char[ ] toCharArray( )
这个函数是为了便于使用而提供的,因此也可以用getChars( )方法获得相同的结果。