将多行文本以单行的格式保存起来 读和写 ini

 

fef

 

https://files.cnblogs.com/files/xe2011/WinAppINI20191226232153.rar

 


/* 2019年12月26日 22:31:38
  * [info]
  *  group = a,b,c,d
  *
  *   需求 修改ini配置信息的group值
  *  
  *   1添加:
  *      往group中添加一个值
  *   2移除:
  *      从group中的值移除一个值
  *   3重命名:
  *      查找,找到修改
  *  
  *    1 读取group的值,把它转换成一个字符串数组,
  *      移除所有空行,把数组重新添加到一个列表中,行为空则不添加
  *     添加: 将要添加的值添加到列表中
  *       将列表转换成一行的字符串,行与行之间用 都好隔开
  *      
  *      
  *    2  读取group的值,把它转换成一个字符串数组,
  *       移除所有空行,把数组重新添加到一个列表中,行为空则不添加 
  *     删除:  判断列表中是否有 要删除的值,有就删除掉,没有不操作
  *       将列表转换成一行的字符串,行与行之间用 都好隔开
  *   
  *
  */

 

 

        //读行的文本 到 列表
        /// <summary>
        /// aaa,dfd,hhh,,ff,hello ->转换成  列表   同时删除空行
        /// </summary>
        /// <param name="text"> aaa,dfd,hhh,,ff,hello</param>
        /// <returns></returns>
        public static List<string> ReadString(string text) {
            List<string> lst = new List<string>();
            //读行的文本 到 列表
            string[] arr = text.Split(',');
            if (arr.Length > 0)
            {
                lst.Clear();
                for (int i = 0 ; i < arr.Length ; i++)
                {
                    string s = arr[i].Trim();
                    if (s.Length > 0)     //不添加空行 //移除所有的空的行
                        lst.Add(s);
                }
            }
            else
            {
                lst.Add(text);
            }
            return lst;
        }


        /// <summary>
        /// 
        /// </summary>
        /// <param name="resString"> aaa,dfd,hhh,,ff,hello 源字符串</param>
        /// <param name="addString">要添加的字符串</param>
        public static string AddString(string resString,string addString) {
            //读行的文本 到 列表
            //[添加]
            //保存
            List<string> list = ReadString(resString);
            string findString = addString.Trim();
            if (list.IndexOf(findString) ==-1)
            {
                list.Add(findString);
            }

            //转换成一行文本
            resString = string.Join(",", list.ToArray());
            if (resString.EndsWith(","))
                resString = resString.Substring(0, resString.Length - 1);
            return resString;
        }

        public static string RemoveString(string resString, string findString) {
            //读行的文本 到 列表
            //[删除]
            //保存

            if (resString.Contains(","))
            {
                findString = findString.Trim();
                List<string> list = ReadString(resString);
                if (list.IndexOf(findString) != -1)//存在
                {
                    list.Remove(findString);
                }
                //转换成一行文本
                resString = string.Join(",", list.ToArray());
                if (resString.EndsWith(","))
                    resString = resString.Substring(0, resString.Length - 1);
                return resString;
            }
            else
            {
                return resString.Replace(findString, "");
            }
        }


        public static string RenameString(string resString, string findString,string newName) {
            //读行的文本 到 列表
            //[删除]
            //重命名
            if (resString.Contains(","))
            {
                findString = findString.Trim();
                List<string> list = ReadString(resString);
                int index = list.IndexOf(findString);
                if (index != -1)//存在
                {
                    if (list.IndexOf(newName) == -1)    //重命名后,不和已有的成员不能重名
                    {
                        list[index] = newName;
                    }
                }
                //转换成一行文本
                resString = string.Join(",", list.ToArray());
                if (resString.EndsWith(","))
                    resString = resString.Substring(0, resString.Length - 1);
                return resString;
            }
            else
            {
                return resString.Replace(findString, newName);
            }
        }

        private void button删除_Click(object sender, EventArgs e) {
            textBox1.Text = RemoveString(textBox1.Text, textBox2.Text);
        }

        private void button添加_Click(object sender, EventArgs e) {
            textBox1.Text = AddString(textBox1.Text, textBox2.Text);
        }

        private void button重命名_Click(object sender, EventArgs e) {
            textBox1.Text = RenameString(textBox1.Text, textBox2.Text,textBox3.Text);
        }
posted @ 2019-12-26 23:22  XE2011  阅读(551)  评论(0编辑  收藏  举报