编写Java程序来处理字符串中的null域
来源:互联网 发布:tomcat发布java项目 编辑:程序博客网 时间:2024/06/03 15:29
编写Java程序来处理字符串中的null域--利用StringTokenizer分解字符串
先看一个场景分析:
import java.util.*;
public class StrTokDemo2 {
/**
* @param args
*/
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());
}
}
结果:
Token: Hello
Token: World
Token: of
Token: Java
但如果使用这上面的程序读取下面的行:
FirstName|Lastname|Company|PhoneNumber
可能会出现问题,例如有人没有工作,他的Company一栏是空的(即形如:FirstName|Lastname| |PhoneNumber),也就是说两个分隔符(空格和|)在一起,但当你运行这个程序时,却没有输出“额外”的token(标记)。
public final static int MAXFIELDS = 5;
public final static String DELIM = "|";
//处理一个字符串,返回一个各域组成的数组
public static String[] process(String line){
String[] results = new String[MAXFIELDS];
StringTokenizer st = new StringTokenizer(line, DELIM, true);
int i = 0;
//得到每一个StringTokenizer类
while(st.hasMoreTokens()){
String s = st.nextToken();
if(s.equals(DELIM)){
if(i++ >= MAXFIELDS)
throw new IllegalArgumentException("Input line " + line + " has too many fields");
continue;
}
results[i] = s;
}
return results;
}
public static void printResults(String input, String[] outputs){
System.out.println("Input: " + input);
for(int i = 0; i < outputs.length; i++)
System.out.println("Output " + i + " was: " + outputs[i]);
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
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"));
}
}
结果:
Input: A|B|C|D
Output 0 was: A
Output 1 was: B
Output 2 was: C
Output 3 was: D
Output 4 was: null
Input: A||C|D
Output 0 was: A
Output 1 was: null
Output 2 was: C
Output 3 was: D
Output 4 was: null
Input: A|||D|E
Output 0 was: A
Output 1 was: null
Output 2 was: null
Output 3 was: D
Output 4 was: E
总结自:《Java经典实例》 O'REILLY 第69页。
先看一个场景分析:
import java.util.*;
public class StrTokDemo2 {
/**
* @param args
*/
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());
}
}
结果:
Token: Hello
Token: World
Token: of
Token: Java
但如果使用这上面的程序读取下面的行:
FirstName|Lastname|Company|PhoneNumber
可能会出现问题,例如有人没有工作,他的Company一栏是空的(即形如:FirstName|Lastname| |PhoneNumber),也就是说两个分隔符(空格和|)在一起,但当你运行这个程序时,却没有输出“额外”的token(标记)。
我可以在构造StringTokenizer对象时增加一个参数True,表示希望将分隔符视为token,但这需要我在做近一步的处理,如下:
//使用StringTokenizer类,包括返回分隔符
public class StrTokDemo4 {public final static int MAXFIELDS = 5;
public final static String DELIM = "|";
//处理一个字符串,返回一个各域组成的数组
public static String[] process(String line){
String[] results = new String[MAXFIELDS];
StringTokenizer st = new StringTokenizer(line, DELIM, true);
int i = 0;
//得到每一个StringTokenizer类
while(st.hasMoreTokens()){
String s = st.nextToken();
if(s.equals(DELIM)){
if(i++ >= MAXFIELDS)
throw new IllegalArgumentException("Input line " + line + " has too many fields");
continue;
}
results[i] = s;
}
return results;
}
public static void printResults(String input, String[] outputs){
System.out.println("Input: " + input);
for(int i = 0; i < outputs.length; i++)
System.out.println("Output " + i + " was: " + outputs[i]);
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
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"));
}
}
结果:
Input: A|B|C|D
Output 0 was: A
Output 1 was: B
Output 2 was: C
Output 3 was: D
Output 4 was: null
Input: A||C|D
Output 0 was: A
Output 1 was: null
Output 2 was: C
Output 3 was: D
Output 4 was: null
Input: A|||D|E
Output 0 was: A
Output 1 was: null
Output 2 was: null
Output 3 was: D
Output 4 was: E
总结自:《Java经典实例》 O'REILLY 第69页。
- 编写Java程序来处理字符串中的null域
- java 处理json字符串中null值
- 程序中的字符串编码处理
- 编写.bat文件来执行java程序
- 利用Java 8 Optional 来进行null处理
- 编写一个程序 输入字符串 直到遇到NULL 实现字符串的首字母排序(图)
- JAVA-字符串处理中的重点
- JAVA-字符串处理中的重点
- JAVA-字符串处理中的重点
- Java 处理字符串中的换行
- FreeMarker中的null处理
- 处理json中的null
- java程序,编写一个程序,输出一个字符串中的大写英文字母数,小写英文字母数及非英文字母数
- java中的程序中断处理
- 编写一个c++程序来编译运行java
- Java 8 Null 处理
- 11-过滤字符串中的空格和null值(字符串处理)
- 【Java】编写一个程序,输出一个字符串中的大写英文字母数,小写英文字母数以及非英文字母数
- 详解SQL Server Profiler分析死锁几大步骤
- 表格一些知识点
- 评价过滤运算符选择对T-SQL执行性能的影响机制
- Linux压缩与解压缩汇总
- ASP.NET中的AJAX应用开发总结
- 编写Java程序来处理字符串中的null域
- ASP.NET中的状态管理 .
- poj 3840 (nim博弈)
- 教你如何迅速秒杀99%的海量数据处理面试题
- 大型软件公司.net面试题!一定得看(附答案) .
- 在List范型集合中实现自定义条件复杂查询 .
- C#和Java中二维数组的区别 .
- 如何有效地解决问题
- java23种设计模式之单例模式(Singleton)