weixin_42074469 2022-04-11 13:27 采纳率: 100%
浏览 85
已结题

C#读取遗传数值,该怎么拆分重组

读取数值类似于
3.93 * 2 , 3.94 * 5 ,3.95 * 3 , 4.1 , 4.2 * 5,

逗号是必须要拆开的,这个问题不大,主要是*这个,比如 * 后面是2,表示这个数值连着出现了两次,只出现一次就不显示
上面这行值解下来应该是
3.93
3.93
3.94
3.94
3.94
3.94
3.94
3.95
3.95
3.95
4.1
4.2
4.2
4.2
4.2
4.2
这个用C#代码该怎么写?不知道发这个问题的时候星号能不能显示出来

  • 写回答

3条回答 默认 最新

  • CSDN专家-showbo 2022-04-11 13:38
    关注

    split得到每组数组,遍历在split下按照第二项生成第一项的个数压入数组中,示例代码如下

    
    using System;
    using System.Linq;
    namespace ConsoleApp3
    {
        class Program
        {
            static void Main(string[] args)
            {
                var s = "3.93*2,3.94*5,3.95*3,4.1,4.2*5";
    
                var rs = s.Split(',').SelectMany(i =>
                {
                    var item = i.Split('*').Select(x => double.Parse(x)).ToArray();
                    if (item.Length == 1) return new double[] { item[0] };
                    else return Enumerable.Repeat(item[0], (int)item[1]).ToArray();
                });
    
                Console.WriteLine(string.Join("\n", rs));
                Console.ReadKey();
            }
        }
    
    }
    

    img


    有其他问题可以继续交流~

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月12日
  • 已采纳回答 4月11日
  • 修改了问题 4月11日
  • 创建了问题 4月11日