问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C# list<string> 怎么提取需要的内容并存入其他...12

发布网友 发布时间:2024-03-21 21:10

我来回答

5个回答

热心网友 时间:2024-03-24 22:16

用正则表达式来实现

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

namespace ConsoleApplication2
{
    class Program
    {
        //定义一个结构存放X,Y坐标
        struct MyPoint
        {
            public float x;
            public float y;
            public override string ToString()
            {
                return string.Format("x={0}, y={1}", x, y);
            }
        }

        static void Main(string[] args)
        {
            //存放提取出的坐标点
            List<MyPoint> pointList = new List<MyPoint>();
            
            List<string> list = new List<string>()            {
                    "X100.013 Y111.084 Z1.07050",
                    "X100.049 Y110.931 Z1.07569",
                    "X100.191 Y110.652 Z1.08603",
                    "X100.412 Y110.431 Z1.09638",
                    "X100.691 Y110.289 Z1.10673",
                    "X100.844 Y110.253 Z1.11192",
                    "X101.008 Y110.240 Z1.11737"
            };
            
            //匹配模式串
            string pattern = @"X(?<x>\d+.\d+) Y(?<y>\d+.\d+) Z\d+.\d+";
            foreach (string s in list)
            {
                Match match = Regex.Match(s, pattern);
                if (match.Success)
                {
                    //从配合结果中取出x,y,并转换成浮点数
                    float xV = float.Parse(match.Result("${x}"));
                    float yV = float.Parse(match.Result("${y}"));
                    //存放到集合中
                    pointList.Add(new MyPoint() { x = xV, y = yV });
                }
            }
            
            // 结果数组
            MyPoint[] points = pointList.ToArray();

            // 显示提前结果
            for (int i = 0; i < points.Length; i++)
            {
                Console.WriteLine(points[i].ToString());
            }
        }
    }
}

热心网友 时间:2024-03-24 22:12

你这些里的这些数字那么整齐还能不好存么,用一个for循环或者foeach循环,把这些数据全部遍历一遍,因为你这些数字过于整齐了,所以你完全可以拿出一项之后 s[i].substring(1,7),这样就拿出x了,同样s[i].substring(10,7)就拿出y了,因为你拿出来是string,记得再Convet.Double一下,就行了,拿出来的坐标你可以去定义一个二维数组都给放进去就行了。

热心网友 时间:2024-03-24 22:17

我也来凑凑热闹,试著用Linq,感觉不错哦

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

namespace LinqTest1
{
    struct DoublePoint
    {
        private double x;
        private double y;
        public DoublePoint(double[] a)
        {
            this.x = a[0];
            this.y = a[1];
        }
        public double X
        {
            get { return this.x; }
            set { this.x = value; }
        }
        public double Y
        {
            get { return this.y; }
            set { this.y = value; }
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            List<string> list = new List<string>() { "X100.013 Y111.084 Z1.07050",
                                                                                "X100.049 Y110.931 Z1.07569",
                                                                                "X100.191 Y110.652 Z1.08603",
                                                                                "X100.412 Y110.431 Z1.09638",
                                                                                "X100.691 Y110.289 Z1.10673",
                                                                                "X100.844 Y110.253 Z1.11192",
                                                                                "X101.008 Y110.240 Z1.11737"};
            var a = from item in list select new DoublePoint(Array.ConvertAll(item.Replace("X", "").Replace("Y", "").Substring(0, item.IndexOf(" Z") - 2).Split(' '), Double.Parse));
            DoublePoint[] value = a.ToArray();
        }
    }
}

热心网友 时间:2024-03-24 22:18

float[] getzXYZ(string t)
        {
            if (t.IndexOf("X")<0 ||t.IndexOf("Y")<0||t.IndexOf("Z")<0)
            {
                return null;

            }

            string sx = t.Substring(t.IndexOf("X"), t.IndexOf("Y") - t.IndexOf("X")).Substring(1);
            string sy = t.Substring(t.IndexOf("Y"), t.IndexOf("Z") - t.IndexOf("Y")).Substring(1);
            string sz = t.Substring(t.IndexOf("Z")).Substring(1);

            float x = float.Parse(sx);
            float y = float.Parse(sy);
            float z = float.Parse(sz);
            float[] rtn=new float[3];
            rtn[0]=x;
            rtn[1]=y;
            rtn[2]=z;
            return rtn;
        }
        //自己迭代

热心网友 时间:2024-03-24 22:12

List<double[]> list=new List<double[]>();
foreach(string str in s)
{
string[] arr=str.Split(new char[]{' '},StringSplitOption.RemoveEmptyEntries);
if(arr.Length>=2)
{
doube x=Convert.ToDouble(arr[0].Trim('X'));
doube y=Convert.ToDouble(arr[1].Trim('Y'));
list.Add(new double[]{x,y});
}
}

//list就是你要的结果了

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
绩效工资从工资里扣合法吗 无人机电机轴的主要功能有哪些? 闽侯南通多久发展 南通哪个位置最有潜力 南通未来的机遇有哪些 江苏南通的发展前景怎么样 南通这座城市未来发展前景怎样 我女儿阳历08年01月08日出生,{农历07年腊月初一}请高人帮忙改个名字... 我女儿是2012年1月10日10:35分出生的五行缺什么,取什么名字好 这种图片效果怎么做出来的,不是纯白板,仔细看有一个个均匀分布的小圆点... C#泛型List&lt;T&gt;58 生活用品除了盐、洗衣粉、护发素,还有哪些过剩产品 ...你的等待是值得的! 大家帮我翻译成英文,谢谢了! 这个标志按钮是怎么用呢 fla文件用什么播放器打开? 抖音钻石怎么换钱的 抖音钻石怎样提现成现金 格华止二甲双胍0.85片能吃半片吗? 二甲双胍最小剂量每天只吃半片有效吗 买新车拉绿通,4.2米和3.8米一样吗?主要想要个排半的。4.2.米没有排半... 拉绿通一般选多大的车呀?有啥好推荐么 微信手机号在24小时内,已绑定两个,已达到限制,不能在绑定其他微信... 你好我想问问,我买房贷款本金50万 年限20年 年利率6.8% 每月还3816.7... 在spss中怎么将成绩分数转变成优良中差? 立即下载 ()滑翔龙,()摇头飞椅填修饰词,比如(惊险刺激)的海盗船_百 ... 反作用力和作用力有什么区别? 微信手机号在24小时内,已绑定两个,已达到限制,不能在绑定其他微信... 守业难的上一句 如何做一名保安主管谢谢了,大神帮忙啊2 怎样当一个保安队长104 c# 集合List&lt;L&gt; &lt;&gt;中的内容有什么意义7 c#中的var是什么类型找半天没找到谁帮解释下29 C# 集合 泛型5 如果登不回去,重新注册了一个还可以申诉回来吗? 如果重新注册一个之前的还可以找得回来吗? 如果重新注册一个之前的还可以找得回来吗? 微信不小心重新注册了想登回原来的怎么办? 登不上,我又注册了一个新的,以前的微号还能找回来吗? 23号地铁龙吴路站靠近罗秀路吗 梦见火山爆发逃跑是什么预兆 微信重新注册了,怎么找回以前那个? 为什么苏宁易付宝会自动扣钱 2021年福建教师招聘报名入口在哪里?考试时间大概是什么时候... ...号重新注册了一个微信,还能找回以前的吗? 尼康d7500怎么对焦 微信手机号在24小时内,已绑定两个,已达到限制,不能在绑定其他微信... 云南云勤物业管理有限责任公司电话是多少? 怎么关闭热水器冷热水管? 名字的昵称和网上的昵称有什么区别 微信手机号在24小时内,已绑定两个,已达到限制,不能在绑定其他微信...