代码实现
import java.util.StringTokenizer;
public class CSVParser {
public static void main(String[] args) {
String csvString = "John,25,Male";
StringTokenizer tokenizer = new StringTokenizer(csvString, ",");
if (tokenizer.countTokens() == 3) {
String name = tokenizer.nextToken();
String ageStr = tokenizer.nextToken();
String gender = tokenizer.nextToken();
try {
int age = Integer.parseInt(ageStr);
System.out.println("姓名: " + name);
System.out.println("年龄: " + age);
System.out.println("性别: " + gender);
} catch (NumberFormatException e) {
System.out.println("年龄解析错误: " + e.getMessage());
}
} else {
System.out.println("CSV字符串格式错误,预期3个字段,实际 " + tokenizer.countTokens() + " 个。");
}
}
}
解析过程中可能遇到的问题及解决办法
- 字段数量不符合预期:
- 问题:CSV字符串可能不包含正好3个字段,例如'John,25'或'John,25,Male,Other'。
- 解决办法:在解析前,通过
StringTokenizer.countTokens()
方法获取字段数量,确保字段数量为3。如果不是3个字段,打印错误信息提示格式有误。
- 年龄解析错误:
- 问题:年龄字段可能不是有效的整数,例如'John,twenty - five,Male'。
- 解决办法:使用
Integer.parseInt()
方法将年龄字符串转换为整数时,放在try - catch
块中捕获NumberFormatException
异常,若解析失败,打印错误信息。
- 分隔符不一致:
- 问题:CSV字符串的分隔符可能不是逗号,例如'John;25;Male'。
- 解决办法:在创建
StringTokenizer
对象时,将正确的分隔符作为参数传入。如果分隔符可能变化,可以在程序中通过配置或用户输入来动态获取分隔符。