读取空行

tuyah 2009-04-15 05:35:02
我用js打开了一个文件,想一行一行的读取里面的字符串,但是遇到空行和行首加了#号的注释行就跳过;
当读到空行的时候,下面代码在else if的地方报错,说0为空或者不是对象,说明第一个if并没有正确匹配到空行,
请教高手如何解决呢?

代码如下:
if (params[0] == /(^\s*)|(\s*$)/)
{
continue;
}
else if (params[0].indexOf("#")==0)
{
//crt.Dialog.MessageBox(params[0], "test", 48| 0);
params[0] = "";
continue;
}
...全文
136 18 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
tuyah 2009-04-16
  • 打赏
  • 举报
回复
谢谢楼上各位的回复,我已经自行解决了,通过定义正则对象来做两个判断搞定,但是让我很不理解的是,为什么把两个写到一个判断里面就不行……郁闷……



re = /^\s*$/;
if (re.test(params[0]))
{
continue;
}
//遇到空行
re = /^#/;
if (re.test(params[0]))
{
continue;
}
tuyah 2009-04-16
  • 打赏
  • 举报
回复
另外,/(^#)|(^\s*$)/这样的表达式
可以匹配到以#开头的行,但是不能匹配到一堆空白字符的行
tuyah 2009-04-16
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 chinmo 的回复:]
你既然用正则,你怎么这么用啊?

/(^#)|(\s*$)/.test(params[0])
这么用不好?
[/Quote]

\s*$是匹配0或者多个空白字符串结尾的行,那么所有行都会被匹配的
  • 打赏
  • 举报
回复
[Quote=引用楼主 tuyah 的帖子:]
我用js打开了一个文件,想一行一行的读取里面的字符串,但是遇到空行和行首加了#号的注释行就跳过;
当读到空行的时候,下面代码在else if的地方报错,说0为空或者不是对象,说明第一个if并没有正确匹配到空行,
请教高手如何解决呢?

代码如下:
if (params[0] == /(^\s*)|(\s*$)/)
{
continue;
}
else if (params[0].indexOf("#")==0)
{
//crt.Dialog.MessageBox(params[0], "test", 48| 0);
params[0…
[/Quote]你既然用正则,你怎么这么用啊?

/(^#)|(\s*$)/.test(params[0])
这么用不好?

两句合并一句不就好了?
直接
if(/(^#)|(\s*$)/.test(params[0]))
{
continue;
}
wcwtitxu 2009-04-16
  • 打赏
  • 举报
回复

if (/^\s*$/.test(params[0])) {
continue;
} else if (/^\s*\#/.test(params[0])) {
params[0] = "";
continue;
}
cuixiping 2009-04-16
  • 打赏
  • 举报
回复
params的问题,运行到这里的时候,params不是数组,或者params[0]为null或者undefined
  • 打赏
  • 举报
回复
我还是感觉合并可以的

不知道你的什么代码

/(^#|^\s*$)/
benjaminwu198818 2009-04-15
  • 打赏
  • 举报
回复
回帖是一种美德!每天回帖即可获得 10 分可用分!
tuyah 2009-04-15
  • 打赏
  • 举报
回复
谢谢楼上几位,明天我试试在来……
balibell 2009-04-15
  • 打赏
  • 举报
回复
* {0,n} 的匹配是不是不合适,如果用 * 不存在空格也会匹配的。
balibell 2009-04-15
  • 打赏
  • 举报
回复
上面的 /[(^\s+)|(\s+&)]/ig; 中括号去掉哈。
balibell 2009-04-15
  • 打赏
  • 举报
回复
var params = [];
//var reg = new RegExp('\\s+','img')
var reg = /[(^\s+)|(\s+&)]/ig;
params[0] = ' ';
if ( params[0].match(reg) )
{
//continue;
}
else if (params[0].indexOf("#")==0)
{
//crt.Dialog.MessageBox(params[0], "test", 48| 0);
params[0] = "";

}
tuyah 2009-04-15
  • 打赏
  • 举报
回复
正则表达式,匹配行首空白,或者空白行尾
balibell 2009-04-15
  • 打赏
  • 举报
回复
params[0] == /(^\s*)|(\s*$)/ 这是什么意思?
tuyah 2009-04-15
  • 打赏
  • 举报
回复
楼上的,indexof是找出相应字符在字符串中的位置,而且这样写我是测试通过的。
mumu_java 2009-04-15
  • 打赏
  • 举报
回复
indexOf()方法中是要放位置号的,lz怎么放"#"?
应该else if (params[0].indexOf(0)=="#") 吧?
tuyah 2009-04-15
  • 打赏
  • 举报
回复
自己顶上去

87,997

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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