Java学习笔记 | 《Java Cookbook》之String(1)

 照着《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”,不知为何我还是输出“|”。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值