照着《Java Cookbook》敲的。
Notice that a given String object,once constructed,is immutable.
If you need to change characters within a String,you should instead create a StringBuilder.
3.1 Taking Strings Apart with Substrings
SubStringDemo.java
package String;
public class SubStringDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
String a = "Java is great.";
System.out.println(a);
String b = a.substring(5);
System.out.println(b);
String c = a.substring(5,7);
System.out.println(c);
String d = a.substring(5,a.length());
System.out.println(d);
}
}
result
3.2 Breaking Strings Into Words
there are two ways:
(1)using a regular expression
for (String word : some_input_string.split("")){
System.out.println(word);
}
(2)using a StringTokenizer(字符串分隔解析类型)
StrTokDemo.java
package String;
import java.util.StringTokenizer;
public class StrTokDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
StringTokenizer st = new StringTokenizer("Hello World of Java");//不输出分隔符
while (st.hasMoreTokens()) {
System.out.println("Token:"+st.nextToken());
}
}
}
result
StrTokDemo2.java
package String;
import java.util.StringTokenizer;
public class StrTokDemo2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
StringTokenizer st = new StringTokenizer("Hello, World|of|Java",", |");//设定分隔符
while (st.hasMoreElements()) {
System.out.println("Token:"+st.nextElement());
}
}
}
result
StrTokDemo3.java
package String;
import java.util.StringTokenizer;
public class StrTokDemo3 {
public static void main(String[] args) {
// TODO Auto-generated method stub
StringTokenizer st = new StringTokenizer("Hello, World|of|Java",", |",true);//输出分隔符
while (st.hasMoreElements()) {
System.out.println("Token:"+st.nextElement());
}
}
}
result
StrTokDemo4.java
package String;
import java.util.StringTokenizer;
public class StrTokDemo4 {
// TODO Auto-generated method stub
public final static int MAXFIELDS = 5;
public final static String DELIM = "|";
/**Processes one String, returns it as an array of Strings
* @throws IllegalAccessException */
public static String[] process(String line) {
String[] results = new String[MAXFIELDS];
//Unless you ask StringTokenizer to give you the tokens,
//it silently discards multiple null tokens.
StringTokenizer st = new StringTokenizer(line, DELIM,true);
int i = 0;
//stuff each token into the current slot in the array.
while (st.hasMoreTokens()) {
String s = st.nextToken();
if (s.equals(DELIM)) {
if (i++>=MAXFIELDS) {
//This is messy:See StrTokDemo4b which uses
// a List to allow any number of fields.
throw new IllegalArgumentException("Input line"+line+"has too many fields");
}//书上例子这里是 continue; ,但这样这里会报错
}
results[i] = s;
}
return results;
}
public static void printResults(String input,String[] outputs) {
int i = 0 ;
System.out.println("Input:"+input);
for(String s:outputs)
System.out.println("Output "+(i++)+" was: "+s);
}
//Should be a JUnit test but is referred to in the book text,
//so I can't move it to the "tests" until the next edit.
public static void main(String[] args) {
printResults("A|B|C|D",process("A|B|C|D"));
printResults("A||C|D",process("A||C|D"));
printResults("A|||D|E",process("A|||D|E"));
}
}
result
?书上结果是这里的|都是输出“null”,不知为何我还是输出“|”。