读书人

求个C#处置字符串的算法

发布时间: 2013-12-10 15:05:55 作者: rapoo

求个C#处理字符串的算法
原字符串:
string bedString1 = "大床(200cm*250cm) 双床(182cm*200cm)";
string bedString2 = "大床(200cm*258cm) 双床";
string bedString3 = "大床(200cm*250cm)";


期望处理后的结果:
大床(2m*2.5m) 双床(1.8m*2m)
大床(2m*2.6m) 双床
大床(2m*2.5m)

要求:
1.将全角括号转换成半角
2.200cm处理为2m, 182cm处理为1.8m,258cm处理为2.6m(四舍五入,保留一位小数,如果是2.0,显示为2)
3.床型长宽不定
4.循环中处理的,效率越高越好
[解决办法]
你查找单位‘cm’,再取出对应3位数字,除100,再四舍五入,再替换
[解决办法]
效率最高的办法:
1、找原字符串的格式规律
2、编写正则表达式
3、一次性抽出你要转换的各参数(然后替换成你想要的)

笨办法:
字符替换
[解决办法]
本帖最后由 caozhy 于 2013-12-07 16:38:44 编辑

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

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string bedString1 = "大床(200cm*250cm) 双床(182cm*200cm)";
string result = Regex.Replace(bedString1, @"((\d+)cm\*(\d+)cm)", new MatchEvaluator(m => string.Format("({0}m*{1}m)", (double)((Convert.ToInt32(m.Groups[1].Value) + 5) / 10) / 10.0, (double)((Convert.ToInt32(m.Groups[2].Value) + 5) / 10) / 10.0)));
Console.WriteLine(result);
}
}
}

读书人网 >C#

热点推荐