Java中如何判断空格 ?

NeverGiveUp2016 2010-07-08 04:54:48
比如读取 excel 文件时:
有内容就读,无内容就设置为 null.

无内容的意思是:只有一个空格 或者 多个空格 或者 "" 等等

本人用的是 Apache POI 来读取excel
写的判断是:
if ((row != null) && (!row.getCell((short) 0).getStringCellValue().equals("")) &&
(row.getCell((short) 0).getCellType()!=row.getCell((short) 0).CELL_TYPE_BLANK))
{ ... }

上面的 row 表示 excel中的行,row.getCell((short) 0).getStringCellValue()表示拿到第一行第一列的值,
row.getCell((short) 0).getCellType()表示第一列的类型,CELL_TYPE_BLANK 表示为空白。

上面是本人写的判断,但还是读取了无内容的列。

本人想要的结果是:不读取无内容的列。

本人是否还漏了其他判断条件?待朋友们给予提示和帮助?谢谢!
...全文
1582 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
kjanes 2010-07-10
  • 打赏
  • 举报
回复
trim()方法
wj63558595 2010-07-09
  • 打赏
  • 举报
回复

if ((row != null) && (!(row.getCell((short) 0).getStringCellValue().trim())equals("")) &&
(row.getCell((short) 0).getCellType()!=row.getCell((short) 0).CELL_TYPE_BLANK))
{ ... }



这样就OK了
luojihaidao 2010-07-09
  • 打赏
  • 举报
回复




String s = row.getCell((short) 0).getStringCellValue();
Matcher m = Pattern.compile("\\s+").matcher(s);
m.matches();

NeverGiveUp2016 2010-07-09
  • 打赏
  • 举报
回复
有人帮忙吗 ?顶啊!
NeverGiveUp2016 2010-07-09
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 luojihaidao 的回复:]
String s = row.getCell((short) 0).getStringCellValue();
Matcher m = Pattern.compile("\\s+").matcher(s);
m.matches();
[/Quote]
回8楼:我尝试到API里查找Matcher类,其中Matcher类中的matchers是有参数的,
为:static boolean matches(String regex,CharSequence input)
我也尝试添加参数,但是还是不行,上面的"\\s+"中的+表示什么意思?连接字符串吗 ?
nisuifen 2010-07-09
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 luojihaidao 的回复:]
Java code

String s = row.getCell((short) 0).getStringCellValue();
Matcher m = Pattern.compile("\\s+").matcher(s);
m.matches();
[/Quote]
java 中的正则
楼主可以试着用下。 java从1.4版本就支持正则表达式了。

closewbq 2010-07-09
  • 打赏
  • 举报
回复
直接获取值trim不用那么费劲!
  • 打赏
  • 举报
回复
你这样的思路貌似是不对的
HSSFCell 的单元格值有好几种类型(请阅读包里的文件),你获取单元格值的时候先
调用我写的这个方法,然后再做判断
private String getCellValue(HSSFCell datacell) {
String result = "";
switch (datacell.getCellType()) {
case HSSFCell.CELL_TYPE_BLANK:
result = "";
break;
case HSSFCell.CELL_TYPE_STRING:
result = datacell.getRichStringCellValue().getString();
break;
case HSSFCell.CELL_TYPE_NUMERIC:
result = String.valueOf(datacell.getNumericCellValue());
break;
case HSSFCell.CELL_TYPE_FORMULA:
result = "";
break;
case HSSFCell.CELL_TYPE_BOOLEAN:
result = String.valueOf(datacell.getBooleanCellValue());
break;
case HSSFCell.CELL_TYPE_ERROR:
result = "";
break;
default:
result = datacell.getRichStringCellValue().getString();
}
return result;
}
NeverGiveUp2016 2010-07-08
  • 打赏
  • 举报
回复
先谢谢大家了!

回2楼:我试了你的方法,可以去掉空格,但是如果是制表符就去不掉了。谢谢!
回3楼:getStringCellValue()返回String,CELL_TYPE_BLANK 表示 类型为int型。
我也试了强制类型转换,还不行。谢谢!

用正则的话,我只听说js有正则表达式判断,那要在jsp中判断了,
Java中有 以 正则表达式为参数的 类 吗 ?或者更好的办法。
xql80329 2010-07-08
  • 打赏
  • 举报
回复
2 楼的方法不错 呵呵。 先将前后所有的空格去掉,然后再判断是否为“”。
dr_lou 2010-07-08
  • 打赏
  • 举报
回复
不考虑excel的话,trim一下。
神之泪花 2010-07-08
  • 打赏
  • 举报
回复
第三个判断条件是不是应该判断取到的值

(row.getCell((short) 0).getStringCellValue()!=row.getCell((short) 0).CELL_TYPE_BLANK)
lizhongqiang_126 2010-07-08
  • 打赏
  • 举报
回复
没用过CELL_TYPE_BLANK这个属性 但是感觉和下面这句代码重复
row.getCell((short) 0).getStringCellValue().equals("")
就是检验这个单元格不是空的
可以试着将上面那行
改成这个
row.getCell((short) 0).getStringCellValue().trim().equals("")
多个空格trim一下去掉空格即可。
试试是否可行
素年 2010-07-08
  • 打赏
  • 举报
回复
用正则。

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧