您的位置:首页 > 其它

短信内容分词(支持动态10~14位纯数字工作单号的签收信息,用在公司业务系统,很实用的算法)

2009-09-14 18:20 423 查看
前段时间接到一个需求,就是将系统接收到的短信内容进行分解,然后更新到业务系统中。

目前可支持的短信格式为:

1. ZC 员工号 密码 (空格可有可无)

2. QS 工作单号[...] 签收人 (空格可有可无,可支持最多5个单号的短信分解)

QS 工作单号 工作单号 签收人 工作单号 签收人

QS 工作单号 工作单号 工作单号 签收人

这些内容都是手机反馈回来的数据,现要写一个程序来分解这些短信为:

ZC 员工号 密码

QS 工作单号 签收人

QS 工作单号 签收人

经过测试,核心算法及代码如下,有注释:

#region 重组短信内容方法
/// <summary>
/// 重组短信内容方法
/// </summary>
/// <param name="MsgText"></param>
/// <returns></returns>
public static string BreakMsg(string MsgText)
{
string su = "";
string Flag = "";
string NewStr = "";

//验证短信最小长度
if (MsgText.Trim().Length > 0)
{
for (int i = 0; i < MsgText.Length; i++)
{
//验证字符是否为数字
if (Char.IsNumber(MsgText, i))
{
switch (Flag)
{
case "":
{
Flag = "数字";
su = MsgText.Substring(i, 1); ;
NewStr += su;
}
break;
case "数字":
{
Flag = "数字";
su = MsgText.Substring(i, 1); ;
NewStr += su;
}
break;
case "字母":
{
Flag = "数字";
su = MsgText.Substring(i, 1); ;
NewStr += "," + su;

}
break;
}
}
else
{
switch (Flag)
{
case "":
{
Flag = "字母";
su = MsgText.Substring(i, 1); ;
NewStr += su;
}
break;
case "数字":
{
Flag = "字母";
su = MsgText.Substring(i, 1); ;
NewStr += "/" + su;
}
break;
case "字母":
{
Flag = "字母";
su = MsgText.Substring(i, 1); ;
NewStr += su;

}
break;
}
}
}
}
else
{
NewStr = MsgText;
}
return NewStr;
}
#endregion

#region 全角转换为半角
/// <summary>
/// 全角转换为半角
/// </summary>
/// <param name="strInput"></param>
/// <returns></returns>
public static string ToDBC(string strInput)
{
char[] c = strInput.ToCharArray();
for (int i = 0; i < c.Length; i++)
{
if (c[i] == 12288)
{
c[i] = (char)32;
}
else if (c[i] > 65280 && c[i] < 65375)
{
c[i] = (char)(c[i] - 65248);
}
}
return new string(c);
}
#endregion

#region 半角转换为全角
/// <summary>
/// 半角转换为全角
/// </summary>
/// <param name="strInput"></param>
/// <returns></returns>
public static string ToSBC(string strInput)
{
char[] c = strInput.ToCharArray();
for (int i = 0; i < c.Length; i++)
{
if (c[i] == 32)
{
c[i] = (char)12288;
}
else if (c[i] < 127)
{
c[i] = (char)(c[i] + 65248);
}
}
return new string(c);
}
#endregion

效果图如下:

http://p.blog.csdn.net/images/p_blog_csdn_net/jato333/EntryImages/20090914/fenjie.JPG
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐