读取有重复section的ini格式文件最新的几个不同section

news2024/11/27 9:57:30
  1. 文件内容示例如下
    可以看到文件并不是标准的 ini 配置文件的格式,存在很多重复的 section(中括号里的就是section) , 我的任务是读取文件末尾最新的四个不同 section,并发送出去。
    在这里插入图片描述

  2. 按照读取 ini 文件那样读取显然是不行的,读不到最后四个。那么怎么样能定位到最后四个不一样的 section 呢?方法非常简单,将文件按行读取到字符串数组里面,再用数组的 LastIndexOf 方法,就能定位到最后四个不同 section 的起始位置。上代码

string[] strs = System.IO.File.ReadAllLines(path);
int[] index = new int[4];
index[0] = Array.LastIndexOf(strs, "[ProductionStarted]");
index[1] = Array.LastIndexOf(strs, "[Counter]");
index[2] = Array.LastIndexOf(strs, "[ProductionInterrupted]");
index[3] = Array.LastIndexOf(strs, "[ProductionRestarted]");
  1. 将数据添加到 4 个 JSON 中,用正则表达式获取等号两边的内容,处理完毕,接下来发送出去就好了。
JObject[] jsons = new JObject[4];
for (int i = 0; i < 4; i++)
{
    jsons[i] = new JObject();
}
for (int i = 0; i < 4; i++)
{
    for (int j = index[i] + 1; j < len; j++)
    {
        if (strs[j].Contains("["))
        {
            break;
        }
        string pattern1 = @"\w+(?=\=)";
        string pattern2 = @"(?<==).*";
        Regex rgx1 = new Regex(pattern1);
        Regex rgx2 = new Regex(pattern2);
        string res1 = rgx1.Match(strs[j], 0).Value;
        string res2 = rgx2.Match(strs[j], 0).Value;
        if (res1 != "" && res2 != "")
        {
            ArrayList arrayList = new ArrayList();
            arrayList.Add(res2);
            jsons[i].Add(res1, JToken.FromObject(arrayList.ToArray()));
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/793842.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

常用API学习08(Java)

格式化 格式化指的是将数据按照指定的规则转化为指定的形式 。 那么为什么需要格式化&#xff1f;格式化有什么用&#xff1f; 以数字类为例&#xff0c;假设有一个比分牌&#xff0c;在无人得分的时候我们希望以&#xff1a;“00&#xff1a;00”的形式存在&#xff0c;那么…

睡眠健康数据分析

项目背景 背景描述 本数据集涵盖了与睡眠和日常习惯有关的诸多变量。如性别、年龄、职业、睡眠时间、睡眠质量、身体活动水平、压力水平、BMI类别、血压、心率、每日步数、以及是否有睡眠障碍等细节。 数据集的主要特征&#xff1a; 综合睡眠指标&#xff1a; 探索睡眠持续时…

Gitlab服务器备份恢复及系统升级

居安思危&#xff0c;思则有备&#xff0c;有备无患。 基于此&#xff0c;申请了一个测试服务器&#xff0c;准备先安装同版本服务器&#xff0c;按照最新的数据进行恢复&#xff0c;然后再将现在的服务器升级到Gitlab的最新版本&#xff0c;记录一下完整的过程&#xff0c;以…

文件上传漏洞总结2

文件上传的大体都已经学习过了 这个假期在给他强化一下 什么是webshell webshell是web入侵的脚本攻击工具。webshell就是一个asp或php木马后门&#xff0c;黑客在入侵了一个网站后&#xff0c;常常在将这些asp或php木马后门文件放置在网站服务器的web目录中&#xff0c;与正常…

C++初阶之一篇文章让你掌握string类(了解和使用)

string类及其模拟实现 1.我们为什么要学习string类2. 标准库中的string类2.1 string类的实例化标准2.2 了解string 3.string类的常用接口说明3.1 string类对象的常见构造3.2 string类对象的容量操作3.3 string类对象的元素访问3.4 string类对象的Iterators&#xff08;迭代器&a…

Websocket协议-http协议-tcp协议区别和相同点

通讯形式 单工通讯-数据只能单向传送一方来发送数据&#xff0c;另一方来接收数据 半双工通讯-数据能双向传送但不能同时双向传送 全双工通讯-数据能够同时双向传送和接受 注&#xff1a;http的通讯方式是分版本 http1.0&#xff1a;单工。因为是短连接&#xff0c;客户端…

C++笔记之对指针类型的变量进行+1操作

C笔记之对指针类型的变量进行1操作 在C中&#xff0c;对指针类型的变量进行"1"操作会根据指针的数据类型而有所不同。这涉及到指针的算术运算&#xff0c;C中的指针算术运算是根据指针所指向的数据类型的大小来进行的。 code review! 文章目录 C笔记之对指针类型的…

扫地机语音提示芯片,智能家居语音交互首选方案,WT588F02B-8S

智能家居已经成为现代家庭不可或缺的一部分&#xff0c;而语音交互技术正是智能家居的核心。在智能家居设备中&#xff0c;扫地机无疑是最受欢迎的产品之一。然而&#xff0c;要实现一个更智能的扫地机&#xff0c;需要一颗语音提示芯片&#xff0c;以提供高质量的语音交互体验…

【iOS】—— 持久化

文章目录 数据持久化的目的iOS中数据持久化方案数据持久化方式分类内存缓存磁盘缓存 沙盒机制获取应用程序的沙盒路径沙盒目录的获取方式 持久化数据存储方式XML属性列表Preferences偏好设置&#xff08;UserDefaults&#xff09;数据库存储什么是序列化和反序列化&#xff0c;…

构建外卖系统小程序,订单管理功能实现步骤详解

外卖系统小程序是近年来越来越受欢迎的一种订餐方式&#xff0c;方便快捷&#xff0c;并且可以减少人与人之间的接触&#xff0c;更加卫生安全。为了搭建一个完善的外卖系统小程序&#xff0c;订单管理功能是必不可少的一部分。在本文中&#xff0c;我们将详细介绍如何实现订单…

java 支持jsonschema

入参校验产品化 schema_xsd可视化编辑器_个人渣记录仅为自己搜索用的博客-CSDN博客 jsonchema的生成 支持v4的jackson-jsonSchema GitHub - mbknor/mbknor-jackson-jsonSchema: Generate JSON Schema with Polymorphism using Jackson annotations jackson-module-jsonSchema …

三、函数-4.日期函数

一、常见函数 二、示例 -- 返回当前日期current date 2023-07-26 select curdate();-- 返回当前时间current time 15:21:14 select curtime();-- 返回当前日期和时间 2023-07-26 15:21:33 select now();-- 获取指定data的年份 2023 select year(now());-- 获取指…

C++教程 从0开始

0基础C教程 从0开始 课堂现在开始 如需学习 请订阅该标签 什么是C&#xff1f; 这个不是太重要 自行查看该链接即可 C_百度百科C&#xff08;c plus plus&#xff09;是一种计算机高级程序设计语言&#xff0c;由C语言扩展升级而产生&#xff0c;最早于1979年由本贾尼斯特劳…

SpringBoot2为什么默认使用CGLib不再使用JDK动态代理

SpringBoot2为什么默认使用CGLib不再使用JDK动态代理 CGLib和JDK动态代理对比1. 不需要实现接口2. 性能3. 代理对象的创建4. 调用方法 2. CGLib使用 CGLib和JDK动态代理对比 1. 不需要实现接口 JDK动态代理类要求目标类必须实现接口,而CGLib动态代理可以直接代理普通类(非接口…

【大数据运维-ambari】自定义fair-scheduler.xml配置文件导致ambari-server启动失败

将自定义fair-scheduler.xml放到 /var/lib/ambari-server/resources/stacks/HDP/3.0/services/YARN/configuration目录下&#xff0c;重启ambari-server失败&#xff1a; 日志显示&#xff1a; 进ambari数据库查看发现数据应该是对的。 删掉之前自定义的文件fair-scheduler.x…

Visual Studio2022报错 无法打开 源 文件 “openssl/conf.h“解决方式

目录 问题起因问题解决临时解决方案 问题起因 近一段时间有了解到Boost 1.82.0新添加了MySQL库&#xff0c;最近一直蠢蠢欲动想要试一下这个库 所以就下载了源码并进行了编译&#xff08;过程比较简单&#xff0c;有文档的&#xff09; 然后在VS2022中引入了Boost环境&#xf…

628. 三个数的最大乘积

628. 三个数的最大乘积 class Solution {public int maximumProduct(int[] nums) {Arrays.sort(nums); return Math.max(nums[nums.length-1]*nums[nums.length-2]*nums[nums.length-3],nums[0]*nums[1]*nums[nums.length-1]);} }

Tribon二次开发-Excel/VBA数据抽取

在Tribon的启动目录下有两个样板Excel&#xff0c;通过在Excel里面抽取数据。 源文件存储在C:\Tribon\M3\customise 打开OutfiList&#xff0c;出现一系列按钮&#xff0c;都是抽取数据的功能按钮&#xff0c;可以点击按钮看看界面&#xff0c; 按照界面提示输入相关参数&…

LeetCode·每日一题·771. 宝石与石头·哈希

作者&#xff1a;小迅 链接&#xff1a;https://leetcode.cn/problems/jewels-and-stones/solutions/2356302/ha-xi-zhu-shi-chao-ji-xiang-xi-by-xun-ge-jnmr/ 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 著作权归作者所有。商业转载请联系作者获得授权&#xff0…

超长三伏天,“高温”模式下如何清凉一“夏”

俗话说“冷在三九&#xff0c;热在三伏”&#xff0c;三伏天一登场便霸占话题热搜C位&#xff0c;异常闷热的天气不仅容易给生活带来不便&#xff0c;还会对健康造成影响&#xff0c;所以大家要注意科学防暑&#xff0c;掌握正确的避暑指南。 今年三伏天超长待机40天&#x…