JavaScript实现解析INI文件内容的方法


Posted in Javascript onNovember 17, 2016

本文实例讲述了JavaScript实现解析INI文件内容的方法。分享给大家供大家参考,具体如下:

.ini 是Initialization File的缩写,即初始化文件,ini文件格式广泛用于软件的配置文件。

INI文件由节、键、值、注释组成。

根据node.js版本的node-iniparser改写了个JavaScript函数来解析INI文件内容,传入INI格式的字符串,返回一个json object。

function parseINIString(data){
  var regex = {
    section: /^\s*\s*([^]*)\s*\]\s*$/,
    param: /^\s*([\w\.\-\_]+)\s*=\s*(.*?)\s*$/,
    comment: /^\s*;.*$/
  };
  var value = {};
  var lines = data.split(/\r\n|\r|\n/);
  var section = null;
  lines.forEach(function(line){
    if(regex.comment.test(line)){
      return;
    }else if(regex.param.test(line)){
      var match = line.match(regex.param);
      if(section){
        value[section][match[1]] = match[2];
      }else{
        value[match[1]] = match[2];
      }
    }else if(regex.section.test(line)){
      var match = line.match(regex.section);
      value[match[1]] = {};
      section = match[1];
    }else if(line.length == 0 && section){
      section = null;
    };
  });
  return value;
}

测试INI内容:

JavaScript实现解析INI文件内容的方法

返回结果对象:

JavaScript实现解析INI文件内容的方法

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
UserData用法总结 lanyu出品
Jul 01 Javascript
js中将HTMLCollection/NodeList/伪数组转换成数组的代码
Jul 31 Javascript
js动态加载以及确定加载完成的代码
Jul 31 Javascript
JavaScript:new 一个函数和直接调用函数的区别分析
Jul 10 Javascript
全面解析Bootstrap中scrollspy(滚动监听)的使用方法
Jun 06 Javascript
webpack常用配置项配置文件介绍
Nov 07 Javascript
JS中利用localStorage防止页面动态添加数据刷新后数据丢失
Mar 10 Javascript
JS实现快速比较两个字符串中包含有相同数字的方法
Sep 11 Javascript
vue-infinite-loading2.0 中文文档详解
Apr 08 Javascript
node 文件上传接口的转发的实现
Sep 23 Javascript
浅谈Vue.set实际上是什么
Oct 17 Javascript
Vue3实现简易音乐播放器组件
Aug 14 Vue.js
详解AngularJS中的表单验证(推荐)
Nov 17 #Javascript
JavaScript实现清空(重置)文件类型INPUT元素值的方法
Nov 17 #Javascript
用Vue.js实现监听属性的变化
Nov 17 #Javascript
JS实现类似51job上的地区选择效果示例
Nov 17 #Javascript
JS实现的适合做faq或menu滑动效果示例
Nov 17 #Javascript
JavaScript中定时控制Throttle、Debounce和Immediate详解
Nov 17 #Javascript
JS动态的把左边列表添加到右边的实现代码(可上下移动)
Nov 17 #Javascript
You might like
用DBSQL类加快开发MySQL数据库程序的速度
2006/10/09 PHP
Windows 下的 PHP-PEAR 安装方法
2010/11/20 PHP
最准确的php截取字符串长度函数
2015/10/29 PHP
Symfony2实现在controller中获取url的方法
2016/03/18 PHP
基于PHP实现商品成交时发送短信功能
2016/05/11 PHP
Yii列表定义与使用分页方法小结(3种方法)
2016/07/15 PHP
php链式操作的实现方式分析
2019/08/12 PHP
laravel 如何实现引入自己的函数或类库
2019/10/15 PHP
详解将数据从Laravel传送到vue的四种方式
2019/10/16 PHP
JS替换字符串中字符即替换全部而不是第一个
2014/06/04 Javascript
Javascript前端UI框架Kit使用指南之kitjs的对话框组件
2014/11/28 Javascript
Javascript中call和apply函数的比较和使用实例
2015/02/03 Javascript
精彩的Bootstrap案例分享 重点在注释!(选项卡、栅格布局)
2016/07/01 Javascript
浅谈Vue的基本应用
2016/12/27 Javascript
node.js入门学习之url模块
2017/02/25 Javascript
详解vue-cli 3.0 build包太大导致首屏过长的解决方案
2018/11/10 Javascript
基于Vue实现图片在指定区域内移动的思路详解
2018/11/11 Javascript
Webpack4 使用Babel处理ES6语法的方法示例
2019/03/07 Javascript
vue组件开发之slider组件使用详解
2020/08/21 Javascript
python使用Tkinter显示网络图片的方法
2015/04/24 Python
Django中使用locals()函数的技巧
2015/07/16 Python
Pycharm保存不能自动同步到远程服务器的解决方法
2019/06/27 Python
Django文件上传与下载(FileFlid)
2019/10/06 Python
Pytorch 数据加载与数据预处理方式
2019/12/31 Python
Django中的AutoField字段使用
2020/05/18 Python
Python drop方法删除列之inplace参数实例
2020/06/27 Python
什么是CSS3 HSLA色彩模式?HSLA模拟渐变色条
2016/04/26 HTML / CSS
菲律宾购物网站:Lazada菲律宾
2018/04/05 全球购物
都柏林通行卡/城市通票:The Dublin Pass
2020/02/16 全球购物
关于Java finally的面试题
2016/04/27 面试题
员工年终演讲稿
2014/01/03 职场文书
青岛导游词
2015/02/12 职场文书
个人合作协议范本
2015/08/06 职场文书
HR必备:超全面的薪酬待遇管理方案!
2019/07/12 职场文书
Sleuth+logback 设置traceid 及自定义信息方式
2021/07/26 Java/Android
什么是Python装饰器?如何定义和使用?
2022/04/11 Python