首页 新闻 会员 周边

求助拆解字符串,

0
悬赏园豆:80 [已解决问题] 解决于 2016-05-31 11:54

将字符串1|2|3|4|5(|为固定,但是里面的内容可能为多个如1,2|3,6|4|5|6,可能每部分内容都为多个,拆分内容依次类推)

希望得到结果13456 16456 23456 26456 ,

求高手指点一二,

流浪的程序员的主页 流浪的程序员 | 初学一级 | 园豆:122
提问于:2016-05-31 09:50
< >
分享
最佳答案
0

这个问题很简单,楼主还需要解答吗?若需要请说明使用何种语言,C#还是?

收获园豆:80
脚本王子 | 小虾三级 |园豆:779 | 2016-05-31 10:39

x需要,麻烦你了

流浪的程序员 | 园豆:122 (初学一级) | 2016-05-31 10:39

@流浪的程序员: 

请问哪种语言?

脚本王子 | 园豆:779 (小虾三级) | 2016-05-31 10:43

@脚本王子: c#

流浪的程序员 | 园豆:122 (初学一级) | 2016-05-31 10:44

@流浪的程序员: 没问题,我等,谢谢了

流浪的程序员 | 园豆:122 (初学一级) | 2016-05-31 10:52

@流浪的程序员: 列出完整的C#控制台程序代码给你.

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace string_split
{
    class Program
    {
        static void Main(string[] args)
        {

            string str = "1,2|3,4|5,6|7,8,9|0";

            string [] arr_row = str.Split('|');

            // 用这个数组保存最终的返回值
            string[] arr = arr_row[0].Split(',');


            for (int i = 1; i < arr_row.Length; i++ )
            {
                string [] arr_elem = arr_row[i].Split(',');

                string [] arr_new = new string [arr.Length * arr_elem.Length];

                int n = 0;

                for (var j = 0; j < arr.Length; j++)
                {
                    for (var k = 0; k < arr_elem.Length; k++)
                    {
                        arr_new[n++] = arr[j] + arr_elem[k];
                    }

                }

                arr = arr_new;
                arr_new = null;

            }


            Console.WriteLine(arr.Length);

            for (int i = 0; i < arr.Length; i++)
            {
                Console.WriteLine(arr[i]);
            }

            
            Console.ReadLine();


        }
    }
}

脚本王子 | 园豆:779 (小虾三级) | 2016-05-31 11:38

@脚本王子: 谢谢,这样可以,

流浪的程序员 | 园豆:122 (初学一级) | 2016-05-31 11:54

@流浪的程序员: 不客气,我觉得这个逻辑比较简单,所以没有写注释,有什么不明白的尽管问。

脚本王子 | 园豆:779 (小虾三级) | 2016-05-31 11:56
其他回答(2)
0

split之后循环拼接呗,希望楼下有更好的办法

心怀宇宙 | 园豆:643 (小虾三级) | 2016-05-31 10:05

能贴下代码吗?我现在的难点在怎么去改变这个数组的元素,改一个好改,2个以及更多就不知道怎么改了

支持(0) 反对(0) 流浪的程序员 | 园豆:122 (初学一级) | 2016-05-31 10:07
0

split,先根据“|”分割,再根据“,”分割,然后拼接

小光 | 园豆:1766 (小虾三级) | 2016-05-31 10:07

这些我都知道,我的难点在于怎么去改变数组的值,然后组装成多个结果,

支持(0) 反对(0) 流浪的程序员 | 园豆:122 (初学一级) | 2016-05-31 10:09

@流浪的程序员: 改变数组的值,不一样么,先遍历数组呗,然后逐个分割

支持(0) 反对(0) 小光 | 园豆:1766 (小虾三级) | 2016-05-31 10:11

@小光: 比如1,2|3,6|4|5|9           我把这个拆分了arr 并且用hashtable记住了前2个位置(key)和内容(value),然后我把前2个位置替换成了一个字符 如$|$||4|5|9,

//定义一个 存放结果的list

List<sting> arrList=new list<string>();

  然后我循环hashtable

               string list=hashtable.value.split(',');

for(int i=0;i<list.length;i++){

                arr[hashtable.key]=list[i]

      arrList.add( getstr(arr));//getstr() 把数组专程字符串

}

}      

最后结果:

支持(0) 反对(0) 流浪的程序员 | 园豆:122 (初学一级) | 2016-05-31 10:18

@流浪的程序员: 很久没有写C#了,暂时没得vs可调式,我找下,等等

支持(0) 反对(0) 脚本王子 | 园豆:779 (小虾三级) | 2016-05-31 10:51

@脚本王子: 还在吗

支持(0) 反对(0) 流浪的程序员 | 园豆:122 (初学一级) | 2016-05-31 11:33
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册