字符串合并及过滤,该如何解决

字符串合并及过滤
本帖最后由 flyskytoday 于 2014-06-06 15:22:58 编辑
程序中以string存储

string str,str1,str2,str3;//因为代码太长不好看,所以分别三段
str1="被分摊面积块:\r\n7#楼:\r\n1层:电梯厅、外半墙。\r\n33.1层:楼梯1。";
str2="\r\n33.2层:走道、楼梯1、电梯机房1、电梯机房2。\r\n33.1层:外半墙";
str3="、外半墙、弱电、水1、强电。\r\n33.2层:外半墙。\r\n33.1层:外半墙。";
str=str1+str2+str3;//这里为数据

数据格式
被分摊面积块:
7#楼:
1层:电梯厅、外半墙。
33.1层:楼梯1。
33.2层:走道、楼梯1、电梯机房1、电梯机房2。
33.1层:外半墙、外半墙、弱电、水1、强电。
33.2层:外半墙。
33.1层:外半墙。
要变成
被分摊面积块:
7#楼:
1层:电梯厅。
33.1层:楼梯1、弱电、水1、强电。
33.2层:走道、楼梯1、电梯机房1、电梯机房2。
1层、33.1层、33.2层:外半墙。
======================
自己弄不出,怎么弄比较好呢?
------解决方案--------------------
使用Split(“\r\n”)分割成数据组处理。
------解决方案--------------------
参考一下我写的http://www.cnblogs.com/bwangel/archive/2012/10/30/2747099.html
也许可以帮你解决问题。它可以帮你完成第一次扫描,把字符串按规律存到字典里
------解决方案--------------------
就是截取字符阿,用Split分割字符串,再结合
------解决方案--------------------
字一行一行遍历
用 层 做key,一个一个存到字典里
最还那行是获取所有层共有的Value,这个可以用Linq
------解决方案--------------------
可以用正则表达式
       string reg = @"\r\n";
             Regex myReg = new Regex(reg);
            MatchCollection na = myReg.Matches(str);
            for (int i = 0; i < na.Count; i++)
            {
                   string  s= na[i].ToString();//循环取出单个
            }
        


希望对你有所帮助
------解决方案--------------------
Split函数不错,但是楼主如果不考虑效率问题的话倒是可以
------解决方案--------------------
引用:
Split函数不错,但是楼主如果不考虑效率问题的话倒是可以


考虑效率用什么?
------解决方案--------------------
为什么外半墙单独放一行,而楼梯1没有呢
------解决方案--------------------
引用:
Quote: 引用:

Split函数不错,但是楼主如果不考虑效率问题的话倒是可以


考虑效率用什么?

你这段功能,我不太了解,据我所知,如果你追求性能,那么把算法在整理一下,如果大量的拼接字符串,那么使用stringbuding比较好。