关于字符串处理函数,请教大家!
分别把以下每行的字符串赋值给STR,要求获取STR中的部分内容:
0.980*1.000*1.000*0.920*1.070*0.960*0.940#0
#0
2.830*2.960*0.920*0.940#0
1.070*1.340*1.030#0
30.760*30.620#0
29.210*29.200*29.200*29.160*29.120*29.110#0
42.990#0
0.000*17.530*17.510*17.510*17.630*17.560#0
133.210*29.200*29.200
要求提取数据结果如下:
0.98
0.00 //如果为“#0”就做为0.00处理
2.83
1.07
30.76
29.21
42.99
0.00
133.21
看过一些字符串的处理函数,例如STR.SubString()、STR.Delete()等,但是由于上面的字符串比较多变,长度不一定,包含的字符也不一样,所以我就不会用了。
感谢大家指点!
[解决办法]
每行用atof转换(atof可以转换到不能转换的字符为止,符合楼主要求)
例:
mmo1和mmo2是TMemo, 先把你的这些字符串Copy到mmo1里,执行以下代码,mmo2里是你要的结果
mmo2->Clear(); for(int i=0; i<mmo1->Lines->Count; i++) { AnsiString s=mmo1->Lines->Strings[i]; mmo2->Lines->Add( atof(s.c_str()) ); //如果想把0显示为0.00, 可以用FormatFloat("0.00",atof(s.c_str())) }
[解决办法]
判断也去掉,直接转换就可以
AnsiString str="0.980*1.000*1.000*0.920*1.070*0.960*0.940#0";//字符串赋值 str=FormatFloat("#0.00",atof(str.c_str()));//转换之后格式化 ShowMessage(ss);//显示0.98