C#后台利用正则表达式查找匹配字符
/// <summary>
/// 发送短信 系统固化短信
/// </summary>
/// <param name="memberId"></param>
/// <param name="mobile"></param>
/// <param name="subType"></param>
/// <param name="groupId"></param>
/// <returns></returns>
public static Result SendMsgBySysInit(string memberId, string mobile, string subType, int groupId)
{
using (CRMEntities db = new CRMEntities())
{
var qTemp = db.TM_Act_CommunicationTemplet.Where(o => o.IsSysInit == true && o.Type == "SMS" && o.SubType == subType && o.DataGroupID == groupId).FirstOrDefault();
string sendMsg = "";
int templateId = 0;
if (qTemp != null)
{
sendMsg = qTemp.BasicContent;
templateId = qTemp.TempletID;
}
Regex reg = new Regex(@"{[a-zA-Z \u4e00-\u9fa5]+}");
MatchCollection mc = reg.Matches(sendMsg);
List<Dictionary<string, string>> lstDict = new List<Dictionary<string, string>>();
for (int i = 0; i < mc.Count; i++)
{
string strRgx = mc[i].Value.ToString().TrimStart('{').TrimEnd('}');
Dictionary<string, string> dict = new Dictionary<string, string>();
var qAlias = db.TD_SYS_FieldAlias.Where(o => o.FieldDesc == strRgx).FirstOrDefault();
if (qAlias != null)
{
dict["name"] = qAlias.FieldAlias;
if (qAlias.ControlType == "date")
{
DateTime qSqlRet = db.Database.SqlQuery<DateTime>(string.Format("select {2} from {0} where memberId='{1}'", qAlias.TableName, memberId, qAlias.FieldName)).FirstOrDefault();
dict["value"] = qSqlRet.ToShortDateString();
}
else
{
string qSql = db.Database.SqlQuery<string>(string.Format("select Convert(varchar,{2}) from {0} where memberId='{1}'", qAlias.TableName, memberId, qAlias.FieldName)).FirstOrDefault();
dict["value"] = qSql;
}
lstDict.Add(dict);
}
}
if (lstDict != null && lstDict.Count > 0)
{
Result ret = SendSms(memberId, mobile, templateId, lstDict, sendMsg);
return ret;
}
else
return new Result(false, "参数不正确,不能发送短信!");
}
}
internal static Result SendSms(string memberId, string mobile, int templateId, object para, string message)
{
string defaultUser = "sys";
try
{
using (CRMEntities db = new CRMEntities())
{
StringBuilder sb = new StringBuilder();
List<Dictionary<string, string>> lstPara = (List<Dictionary<string, string>>)para;
sb.Append("{");
for (int i = 0; i < lstPara.Count; i++)
{
Dictionary<string, string> dict = lstPara[i];
sb.AppendFormat("\"{0\"}:\"{1}\"", dict["name"], dict["value"]);
if (i < lstPara.Count - 1)
sb.AppendFormat(",");
}
sb.Append("}");
var ent = new TM_Sys_SMSSendingQueue
{
Mobile = mobile,
Message = message,
MemberID = memberId,
AddedDate = DateTime.Now,
AddedUser = defaultUser,
Remark = "sys",
MsgPara = sb.ToString(),//JsonHelper.Serialize(para),
TempletID = templateId,
IsSent = false,
};
db.TM_Sys_SMSSendingQueue.Add(ent);
db.SaveChanges();
return new Result(true, "发送成功!");
}
}
catch (Exception ex)
{
return new Result(false, ex.Message);
}
}
C#后台利用正则表达式查找匹配字符的更多相关文章
- 在eclipse中利用正则表达式查找替换
众所周知,eclipse是可以用正则表达式来进行查找的,那么怎么利用正则表达式进行替换呢? 方法也很简单,就是在Replace with: 里面输入$来代表捕获型括号的匹配结果,$1为第一个匹配结果, ...
- swift 3.0 正则表达式查找/替换字符
1.什么是正则表达式 正则表达式,又称正规表示法.常规表示法(英语:Regular Expression,在代码中常简写为regex.regexp或RE),计算机科学的一个概念.正则表达式使用单个字符 ...
- linux 查找匹配文件中包含指定字符的 前五行,这里是指所有匹配的前五行
最近被问到 一个关于查找匹配字符的信息显示问题: 系统/etc/sysctl.conf文件会定义系统内核的一些配置,请查找和net有关的信息,并只打印前面5行信息. 解决方式大概试两种写法均可: 1. ...
- (转)ObjC利用正则表达式抓取网页内容(网络爬虫)
转自:http://www.cocoachina.com/bbs/read.php?tid=103813 *****boy]原创 2012年5月20日 在开发项目的过程,很多情况下我们需要利用互联网上 ...
- OC利用正则表达式获取网络资源(网络爬虫)
在开发项目的过程,很多情况下我们需要利用互联网上的一些数据,在这种情况下,我们可能要写一个爬虫来爬我们所需要的数据.一般情况下都是利用正则表达式来匹配Html,获取我们所需要的数据.一般情况下分以下三 ...
- ObjC利用正则表达式抓取网页内容(网络爬虫)
本文转载至 http://www.cocoachina.com/bbs/read.php?tid=103813&fpage=63 在开发项目的过程,很多情况下我们需要利用互联网上的一些数据,在 ...
- Sublime 、NotePad++中查找匹配中文字符
在Sublime .NotePad++中可以使用正则表达式 [\x{4e00}-\x{9fa5}] 查找匹配中文字符.
- Js 利用正则表达式和replace函数获取string中所有被匹配到的文本
js的replace函数除了替换文本以外还有获取所有被正则表达式匹配到的文本的功能.这里以一个简单的案例来作为演示. 利用正则查找出所有被两个花括号包裹的字符串: var str = '<div ...
- Notepad++正则表达式查找替换文本中文字符
测试需求 测试工具中xml配置文件中注释字段包含中文字符,在Win10系统下使用工具中偶尔会出现中文乱码导致配置文件失效.解决方法将配置文件中的中文注释换成英文注释或者直接替换删除.如何将配置文件中的 ...
随机推荐
- FTP文件操作之下载文件
前面写了采用ftp上传文件,有了上传怎么能够没有下载呢?如果只有上传没有下载,那上传了也没啥用了.所以今天就跟大家一起学习学习使用ftp下载文件. 知道了怎么上传,那么下载也就变得很简单了,上传是把文 ...
- POJ--2923--Relocation--如压力DP
Relocation Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 2288 Accepted: 950 Descrip ...
- 更新代码和工具,组织起来,提供所有博文(C++,2014.09)
为了更容易地管理各种规范和工具所涉及的资源鲍文,现在把这些资源迁移 GitHub 在,趣者可前往下载. C++ 1.<通用高性能 Windows Socket 组件 HP-Socket v3.2 ...
- JSP 获得Spring 注射对象
<%@ page import="org.springframework.web.context.support.WebApplicationContextUtils"%&g ...
- SpringMVC Ajax返回的请求json
的方式来解决在中国字符串乱码问题
1.org.springframework.http.converter.StringHttpMessageConverter类是类处理请求或相应的字符串.和默认字符集ISO-8859-1,所以当返回 ...
- 在SQL2008中,如何让id自动生成并自动递增?如何让时间默认生成?
id自动递增: 如果是用语句操作,这样定义:ID INT IDENTITY,如果是要生成一对数字,这样定义:ID INT IDENTITY(1,1) 如果要在SQL Server的表中设置 ...
- 【Java技术位】——代理模式及其事务包
背景 项目中我们会遇到这种情况:在几个方法中增加同样的代码,这些代码是与业务无关的,而且以后有可能因为考虑不周或需求变动再或者是其它原因,我们须要对他们进行逐一进行修改.举个详细的样例,比方程序中的日 ...
- Android setDisplayOptions 具体的使用说明
Android有几个地方使用位计算.实例Intent Flags,它们的定义View onMeasure(int widthMeasureSpec, int heightMeasureSpec),并且 ...
- linux软与硬接线连接
1.Linux链接概念 Linux链接分两种.一种被称为硬链接(Hard Link),还有一种被称为符号链接(Symbolic Link).默认情况下,ln命令产生硬链接. [硬连接] 硬连接指通过索 ...
- PowerMockito使用详解(转)
一.为什么要使用Mock工具 在做单元测试的时候,我们会发现我们要测试的方法会引用很多外部依赖的对象,比如:(发送邮件,网络通讯,远程服务, 文件系统等等). 而我们没法控制这些外部依赖的对象,为了解 ...