解决方案 »
- backgroundWorker第二次run直接进入RunWorkerCompleted
- C#控制台要学到什么程度才适合去学窗体???
- C#入门经典里面的源代码有问题啊
- 装饰模式的现实模拟 1
- 郁闷中... Vs2003 与 水晶报表!!!!
- datagrid中绑定dataset,点del键删除最后一行(空白行的上一行,有数字的最后一行)时,出现了错误“未将对象的引用设置到对象的实例”,
- WCF 客户端配置错误,不能链接服务端的IP
- 接口问题
- 如何列举出本机所有可用的COM端口?
- 如何在显示Relational Data的dataGrid中禁止AllowNew!!??
- 数组对换
- 敲击回车时,执行换行操作
foreach(string x in values)
{
if(x.ToLower().Contains(s.ToLower())&& x.Length-s.Length<=1)
lst.Add(x);
}
字符串相同部分
var c=arr1.Intersect(arr2).ToArray();
string[] values = { "dateTime", "dataTime", "unsgnedShort", "unsignedShort", "unsignadShort", "Zint", "zint" };
string[] keys = { "dateTime", "unsignedShort", "Zint", "unsignedByte", "Zstring", "Zlong", "binary" };
StringBuilder builder = new StringBuilder();
foreach (string key in keys)
{
builder.Append(Regex.Escape(key) + "|");
}
builder.Remove(builder.Length - 1, 1);
Regex reg = new Regex(builder.ToString(), RegexOptions.Compiled | RegexOptions.IgnoreCase);
List<string> result = new List<string>();
foreach (string value in values)
{
if (reg.IsMatch(value)) result.Add(value);
}
//result就是你要的结果//或是Linq
string[] result_array = (from v in values where reg.IsMatch(v) select v).ToArray();
void Main()
{
string[] str={
"dateTime",
"unsignedShort",
"Zint",
"unsignedByte",
"Zstring",
"Zlong",
"binary"};
string[] values={"dateTime","dataTime","unsgnedShort","unsignedShort","unsignadShort","Zint","zint"};
// {"dateTime","dateTime","unsignedShort","unsignedShort","unsignedShort","Zint","Zint",....}
var query= from s1 in str
from s2 in values
let s11 = s1.ToLower().ToCharArray()
let s22 = s2.ToLower().ToCharArray()
where s11.Distinct().Count()-s11.Intersect(s22).Count()<=1 && s1.Length>=s2.Length
select s1;
values=query.ToArray();
}
dateTime
unsignedShort
Zint
zint
只是列出了匹配的几种类型,貌似我的表达不够清楚。
我要想返回的是:values 值,即使它里面有写错的或者大小写的,也把它转换成最匹配的值。
"dateTime", "dataTime", "unsgnedShort", "unsignedShort", "unsignadShort", "Zint",
"zint","zints","aunsignedByte","unsignedByt","binar","binary"
};
对于如:aunsignedByte的多一个字符的,貌似没有匹配上,赐教!
from s2 in values
let s11 = s1.ToLower().ToCharArray()
let s22 = s2.ToLower().ToCharArray()
where s11.Distinct().Count()-s11.Intersect(s22).Count()<=1 && (s1.Length-s2.Length<=1 && s1.Length-s2.Length>=-1)
select s1 ;
values=query.ToArray();