C# list<string> 怎么提取需要的内容并做一些计算?

例如list<string>s里有从文本里读取的“X100.013Y111.084Z1.07050”“X100.049Y110.931Z1.07569”“X100.191... 例如list<string>s里有从文本里读取的
“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”
……………………………………
……………………………………
要把Z后的数字由现在的绝对值改为相对值?就是把第一个改为Z0.00000,然后之后为相邻两个递增的差值?
展开
 我来答
然后去远足
2015-01-25 · TA获得超过1万个赞
知道大有可为答主
回答量:4016
采纳率:83%
帮助的人:2439万
展开全部

每一行数据用 Spite 方法分割一下,可以直接按"Z"来分,把 string 类型用 Convert.ToDouble(string) 方法转一下类型变成 Double,定义一个变量储存第一个元素的值,之后 for 循环依次做差就完了。

 

参考代码:

List<string> lst;                         // 这是原来的 List
List<string> lstNew = new List<string>(); // 重新计算后的 List 
double baseNumber = Convert.ToDouble(lstOld[0].Split('Z')[1]);
for (int i = 0; i < lstOld.Count; i++)
{
    double currentNumber = Convert.ToDouble(lstOld[i].Split('Z')[1]);
    lstNew.Add(lstOld[i].Split('Z')[0] + "Z" + (currentNumber - baseNumber).ToString("N5"));
}
dyzeke
2015-01-25 · TA获得超过208个赞
知道小有建树答主
回答量:676
采纳率:60%
帮助的人:327万
展开全部
List<string> s = new List<string>();
s.AddRange(tem);
int addInt=2;//递增值
for (int i = 0; i < s.Count; i++)
{
string[] arr = s[i].Split('Z');
s[i] = arr[0] + "Z" + (0 + i * addInt+".").PadRight(7,'0');
}

当然也可以把最后一部分计算好的值用ToString("f5")显示
追问
Z后面可能有其他内容,这么做会把之后的删掉吧?
追答
那就用string的indexof截取字符Z的位置,再设置,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式