首页新闻找找看学习计划

C# 字符串拆分重组问题。

0
悬赏园豆:5 [已解决问题] 解决于 2014-01-13 14:48

string str="金海湾豪庭13、15、16、17、19座";

怎样将str拆分重组为 金海湾豪庭13座|金海湾豪庭15座|金海湾豪庭16座|金海湾豪庭17座|金海湾豪庭19座?

sidecore的主页 sidecore | 初学一级 | 园豆:2
提问于:2013-12-19 15:42
< >
分享
最佳答案
0
            string str = "金海湾豪庭13,15,16,17,19座";
            var strArray = str.Substring(0, str.Length - 1).Split(new char[]{','},StringSplitOptions.RemoveEmptyEntries);
            string result = strArray[0] + "座|";
            for (int i = 1; i < strArray.Length; i++)
            {
                result += "金海湾豪庭" + strArray[i] + "座|";
            }
            result = result.TrimEnd('|');
收获园豆:5
Zery | 大侠五级 |园豆:6066 | 2013-12-19 16:02
const string str = "金海湾豪庭13,15,16,17,19座";
            var strArray = str.Substring(0, str.Length - 1).Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
            var laststr = str.Substring(str.Length - 1)+'|';//座|
            var result = strArray[0] + laststr;
            var arrysplit = strArray[0].Substring(0, strArray[0].Length - 2);//金海湾豪庭
            for (int i = 1; i < strArray.Length; i++)
            {
                result += arrysplit + strArray[i] + laststr;
            }
            result = result.TrimEnd('|');
View Code


我修改了一下,金海湾豪庭 直接用Substring()取出来。 但却只适合找这种字符串,当字符串是:

string str="B23号区十一号、十三号综合楼";

string str="商业A号、二号楼";

string str="H7号小区源潭太阳商业广场十、十二、十三号楼";

还是不能很好的拆分出来。能不能用正则取出来?

sidecore | 园豆:2 (初学一级) | 2013-12-19 19:03

@sidecore: 

正则肯定可以的,刚刚写了一下出来了

(?<name>[^,]+) 以逗号为分隔C#中的用法你肯定知道了,我就不写了

Zery | 园豆:6066 (大侠五级) | 2013-12-19 21:02

@Zery: (?<name>[^,]+)这个正则取到的是 逗号 前面的字符串,比如str = "金海湾豪庭13,15,16,17,19座" 中的“金海湾豪庭13”、str="B23号区十一号,十三号综合楼" 中的“B23号区十一号”。

但我是想取出13前面的“金海湾豪庭”、十一号前面的 “B23号区”。

sidecore | 园豆:2 (初学一级) | 2013-12-19 22:05

@sidecore: 这个正则是没法实现的。","号前的字符没法确定

Zery | 园豆:6066 (大侠五级) | 2013-12-20 11:39
其他回答(2)
0

楼上这句多余.

月明时勤 | 园豆:746 (小虾三级) | 2013-12-19 17:20
0
            string str="金海湾豪庭13、15、16、17、19座";
            string strs = str.Substring(0, 5);
            string[] nums = str.Substring(0,str.Length-1).Split(new char[]{''},StringSplitOptions.RemoveEmptyEntries);
            for (int i = 1; i < nums.Length; i++)
            {
               
                Console.Write(strs + nums[i] + "座|");
            }

            Console.ReadKey();
MiccNet | 园豆:204 (菜鸟二级) | 2014-04-23 14:09
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册