Java中Tokenizer的char转String方法及逗号分隔文件读取问题
Java StringTokenizer中char与String转换及文件解析问题解决
一、char类型转String类型的几种常用方法
在Java里把char转成String有几个简单好用的方式,根据场景选择即可:
- 推荐使用
String.valueOf(char):这是最标准的做法,性能好且安全,示例代码:char myChar = 'R'; String charStr = String.valueOf(myChar); - 直接拼接空字符串:写法最简单直观,不过底层会创建临时
StringBuilder,性能略逊一筹,适合简单场景:char myChar = 'D'; String charStr = "" + myChar; - 使用
Character.toString(char):本质上内部就是调用String.valueOf,效果和第一种完全一样,写法也很清晰:char myChar = 'I'; String charStr = Character.toString(myChar);
二、解决你文件解析中的类型不匹配问题
看你的代码,核心问题出在char party = st.nextToken();这一行——StringTokenizer.nextToken()返回的是String类型,不能直接赋值给char变量,得根据你的实际数据情况来处理:
场景1:文件中party字段是单个字符(比如"D"、"R")
如果party对应的是单个字符的字符串,你可以取字符串的第一个字符来转换,记得先做合法性检查避免报错:
for(int i = 0; i < s.length; i++) { String str = scan.nextLine(); StringTokenizer st = new StringTokenizer(str, ","); String name = st.nextToken().trim(); // 建议加trim()处理字段前后可能的空格 String abbreviation = st.nextToken().trim(); long population = Long.parseLong(st.nextToken().trim()); String govName = st.nextToken().trim(); // 处理party字段 String partyStr = st.nextToken().trim(); char party; if (partyStr.length() == 1) { party = partyStr.charAt(0); } else { // 处理异常情况,比如字段为空或者长度不符合预期 throw new IllegalArgumentException("Party字段格式错误:" + partyStr); } int ageWhenElected = Integer.parseInt(st.nextToken().trim()); // 后续业务逻辑... }
场景2:文件中party字段是多字符字符串(比如"Democratic")
这种情况下,你只需要把party的变量类型改成String,直接接收nextToken()的结果即可:
// 将char party修改为String类型 String party = st.nextToken().trim();
另外提一句,如果你觉得StringTokenizer用着不够灵活,也可以尝试用String.split(",")来拆分字符串,比如String[] tokens = str.split(",\\s*");(\\s*用来匹配逗号后面的任意空格),这样可以直接通过下标获取各个字段,处理带空格的分隔场景会更方便。
内容的提问来源于stack exchange,提问作者Avoras
相关产品推荐
相关产品推荐

