先说一下我的方法:
1、getChars()方法截取多个字符
2、substring()方法截取子串
3、StringTokenizer() 截取字符串
4、Split()方法截取字符串
下面逐一举例说明:
1、getChars( ) 截取多个字符
void getChars(int sourceStart,int sourceEnd,char target[ ],int targetStart)
int sourceStart:子串开始字符的下标
int sourceEnd:子串结束后的下一个字符的下标
char target[ ]:接收所截取的字符串的数组
int targetSyart:开始复制子串的下标值
public class getCharsTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
String str = "I love china,my motherland!";
char buffer[] = new char[20];
str.getChars(2, 7, buffer, 0);
for(char i : buffer){
System.out.println(i);
}
}
}
其结果为:
l
o
v
e
2、substring()方法截取字符串
String substring(int beginIndex)
String substring(int beginIndex,int endIndex)
对于单参数的substring()方法,截取将会从指定索引处的字符开始,一直截到字符串结束
对于双参数的substring ()方法,截取将会从自定索引处的字符开始,一直截到指定索引的字符的上一个字符,也就是第endIndex-1个字符,所以截取的字符串的长度为endIndex-1-(beginIndex-1)
下面我们做一个实验:
public class substringTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
String str = "I love china,my motherland!";
String tempStr1 = str.substring(2);
String tempStr2 = str.substring(2, 12);
System.out.println("tempStr1 :"+tempStr1);
System.out.println("tempStr2 :"+tempStr2);
}
}
其输出为:
tempStr1 :love china,my motherland!
tempStr2 :love china
上述两种方法只能算得上是对字符串的简单的截取,下面来介绍更高大上的方法!
3、StringTokenizer()方法,此方法可以将一个字符串按照你的要求分解为一个一个的单词或者是标记
【示例 1】
import java.util.StringTokenizer;
public class stringTokenizerTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
StringTokenizer stz = new StringTokenizer("I love china,my motherland!", "n");
while(stz.hasMoreElements()){
System.out.println("Token:" + stz.nextToken());
}
}
}
截取结果为:
Token:I love chi
Token:a,my motherla
Token:d!
上面见到了StringTokenizer中经常用到的两个方法,hasMoreElements(),用来判断是否还有下一个子串,nextElement()返回StringTokenizer的下一个标记
StringTokenizer有三个构造方法
(1)StringTokenizer(String str) 默认以"\t\n\r\f"为分隔符
示例:
import java.util.StringTokenizer;
public class stringTokenizerTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
StringTokenizer stz = new StringTokenizer("I love china,my motherland!");
while(stz.hasMoreElements()){
System.out.println("Token:" + stz.nextToken());
}
}
}
输出:
Token:I
Token:love
Token:china,my
Token:motherland!
(2)StringTokenizer(String str,String delim),此构造方法指定denim为分隔符,示例请看 【示例 1】
(3)StringTokenizer(String str,String denim,boolean returnDelims) returnDelim决定分隔符是否也未标记,即是否返回分隔符。
示例:
import java.util.StringTokenizer;
public class stringTokenizerTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
StringTokenizer stz = new StringTokenizer("I.love.china,my.motherland!",".,",true);
while(stz.hasMoreElements()){
System.out.println("Token:" + stz.nextToken());
}
}
}
输出:
Token:I
Token:.
Token:love
Token:.
Token:china
Token:,
Token:my
Token:.
Token:motherland!
4、String.Split()方法截取字符串
String.Split()方法有六个重载函数,如下:
public String[] Split(char[ ] separator)
public String[] Split(char[ ] separator,int count)
public String[] Split(char[ ] separator,StringSplitOptions option)
public String[] Split(String[ ] separator,StringSplitOptions option)
public String[] Split(char[ ] separator,int count,StringSplitOptions option)
public String[] Split(String[ ] separator,int count,StringSplitOptions option)
上述方法中 int count参数均表示将字符串分割成count个子串
初始化一个字符串 String str = "a.b.c.d.e.f..g"
str.Split(new char[ ]{"."}) 会返回{"a","b","c","d","e","f","","g"}
str.Split(new char[ ]{"."},2)会返回{"a","b.c.d.e.f..g"}
str.Split(new char[ ]{"."},StringSplitOptions.RemoveEntries)会返回{"a","b","c","d","e","f","g"},不保留空元素;
str.Split(new char[ ]{"."},StringSplitOptions.None)会返回{"a","b","c","d","e","f","","g"},保留空元素
str.Split(new String[ ]{"."},StringSplitOptions.RemoveEntries)会返回{"a","b","c","d","e","f","g"},不保留空元素;
str.Split(new String[ ]{"."},StringSplitOptions.None)会返回{"a","b","c","d","e","f","","g"},保留空元素
str.Split(new String[ ]{"."},2,StringSplitOptions.RemoveEntries)会返回{"a","b.c.d.e.f..g"},不保留空元素;
str.Split(new String[ ]{"."},10,StringSplitOptions.None)会返回{"a","b","c","d","e","f","","g"},保留空元素
请尊重劳动成果,转载或使用请注明出处:
http://blog.youkuaiyun.com/qq_21163257/article/details/52148640