两个string数组对应比较
最近做的array string类型对比。这个可能比较复杂,用的是linq 是请教别人的,我在这里记录一下
jquery 方法里面的数组
function arrtxt() {
var arrt= [];
arrt.push('测试', '女', '124563', '');
arrt.push('小城市', '女', '8593431', '66867857857');
arrt.push('小路与', '男', '8593431', '498464');
var arrs = [];
arrs.push('小于', '女', '123123123', '' );
arrs.push('小城市', '女', '8593431', '66867857857');
arrs.push('小周', '男', '8593431', '498464');
$.ajax({
url: "ArrList.ashx?opt=arr&arrt=" + arrt+ "&arrs =" + arrs ,
type: "post",
success: function (date) {
var u = $.parseJSON(date);
var kref = u.ker
var tdker = u.td
var tab="<table>";
for (var i = 0; i< kref.length; i++) {
tab="<tr><td><span>" + kref[i].krname + "</span></td。";
tab+= "<td> <span>" + kref[i].krvisa + "</span></td></tr>";
}
tab+="</table>";
}
后台ashx页面
获取页面参数
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
context.Response.Charset = "utf-8"; string opt = context.Request.Params["opt"].ToString().Trim();
string html = "";
switch (opt)
{
case "arr":
html = Getarr(context);
break;
}
context.Response.Write(htm);
}
获取的参数
#region Astring数组对比
public string GetArr(HttpContext context)
{
JObject jo = new JObject();
JObject jotd = new JObject();
JObject jakr = new JObject();
string[] arrkr = new string[] {};
#region
string kerens = "";
if (!string.IsNullOrEmpty(context.Request.Params["arrt"]))
{
kerens = context.Request.Params["krres"].ToString().Trim();
if (kerens.Length > && kerens != "")
{
arrkr = kerens.Split(',');
}
}
string tdcz = "";
string[] arrtd = new string[] { };
if (!string.IsNullOrEmpty(context.Request.Params["arrs"]))
{
tdcz = context.Request.Params["tdds"].ToString().Trim();
if (tdcz.Length > && tdcz != "")
{
arrtd = tdcz.Split(',');
}
}
List<string> arrkrsd = new List<string>();
string[] krstr = new string[] { };
for (int i = , j = ; i < Math.Ceiling(arrkr.Length / 4m); i++, j = j + )
{
krstr = (SplitArray(arrkr, j, ));
arrkrsd.Add(krstr[] + "," + krstr[] + "," + krstr[] + "," + krstr[] );
arrkrsd.ToArray();
}
var krsd = arrkrsd.Distinct().ToArray();
List<string> arrtdsd = new List<string>();
string[] tdstr = new string[] { };
for (int i = , j = ; i < Math.Ceiling(arrtd.Length / 4m); i++, j = j + )
{
tdstr = (SplitArray(arrtd, j, ));
arrtdsd.Add(tdstr[] + "," + tdstr[] + "," + tdstr[] + "," + tdstr[] );
arrtdsd.ToArray();
}
var tdsd=arrtdsd.Distinct().ToArray();
var combine =
krsd.Concat(tdsd) // 合并
.Distinct() // 去掉重复项
.ToArray(); // 通过Linq进行left join, 得到数组A
var Kre =
(from cItem in combine
join aItem in krsd on cItem equals aItem into ps
from p in ps.DefaultIfEmpty()
select p).ToArray(); // 通过Linq进行left join, 得到数组B
var TD =
(from cItem in combine
join bItem in tdsd on cItem equals bItem into ps
from p in ps.DefaultIfEmpty()
select p).ToArray(); JObject newkr = new JObject();//新——客人
JObject newtd = new JObject();//新——团队
JArray jkt = new JArray();//新—客人
JArray jtd = new JArray();//新——团队
string[] ku = new string[] { };
for (int i = ; i < Kre.Length; i++)
{
newkr = new JObject();//新——客人
ku = new string[] { };
string j = Kre[i];
if (string.IsNullOrEmpty(j))
{
newkr.Add("krname", "");
newkr.Add("krsex", "");
newkr.Add("krmobile", "");
newkr.Add("krsfz", "");
}
else
{
ku = j.Split(',');
newkr.Add("krname", ku[]);
newkr.Add("krsex", ku[]);
newkr.Add("krmobile", ku[]);
newkr.Add("krsfz", ku[]);
}
jkt.Add(newkr);
}
string[] kutt = new string[] { };
for (int k = ; k < TD.Length; k++)
{
newtd = new JObject();//新——团队
kutt = new string[] { };
string ty = TD[k];
if (string.IsNullOrEmpty(ty))
{
newtd.Add("tdname", "");
newtd.Add("tdsex", "");
newtd.Add("tdmobile", "");
newtd.Add("tdsfz", ""); }
else
{
kutt = ty.Split(',');
newtd.Add("tdname", kutt[]);
newtd.Add("tdsex", kutt[]);
newtd.Add("tdmobile", kutt[]);
newtd.Add("tdsfz", kutt[]);
}
jtd.Add(newtd);
}
jo.Add("ker", jkt);
jo.Add("td", jtd); return jo.ToString(); }
//分隔数组
public static string[] SplitArray(string[] Source, int StartIndex, int Len)
{
string[] result = new string[Len];
for (int i = ; i < Len; i++)
{
result[i] = i + StartIndex > Source.Length - ? "" : Source[i + StartIndex];
}
return result;
}
#endregion
后台ashx
<span>" + ker[w].krname + "</span>
<span>" + td[w].tdname+ "</span>
#region 客人名单对比 public string GetContrast(HttpContext context) { JObject jo = new JObject(); JObject jotd = new JObject(); JObject jakr = new JObject(); string[] arrkr = new string[] {}; #region string kerens = "";//客人名单 if (!string.IsNullOrEmpty(context.Request.Params["krres"])) { kerens = context.Request.Params["krres"].ToString().Trim(); if (kerens.Length > 0 && kerens != "") { arrkr = kerens.Split(','); } } string tdcz = "";//客人名单 string[] arrtd = new string[] { }; if (!string.IsNullOrEmpty(context.Request.Params["tdds"])) { tdcz = context.Request.Params["tdds"].ToString().Trim(); if (tdcz.Length > 0 && tdcz != "") { arrtd = tdcz.Split(','); } } List<string> arrkrsd = new List<string>(); string[] krstr = new string[] { }; for (int i = 0, j = 0; i < Math.Ceiling(arrkr.Length / 10m); i++, j = j + 10) { krstr = (SplitArray(arrkr, j, 10)); arrkrsd.Add(krstr[0] + "," + krstr[1] + "," + krstr[2] + "," + krstr[3] + "," + krstr[4] + "," + krstr[5] + "," + krstr[6] + "," + krstr[7] + "," + krstr[8] + "," + krstr[9]); arrkrsd.ToArray(); } var krsd = arrkrsd.Distinct().ToArray(); List<string> arrtdsd = new List<string>(); string[] tdstr = new string[] { }; for (int i = 0, j = 0; i < Math.Ceiling(arrtd.Length / 10m); i++, j = j + 10) { tdstr = (SplitArray(arrtd, j, 10)); arrtdsd.Add(tdstr[0] + "," + tdstr[1] + "," + tdstr[2] + "," + tdstr[3] + "," + tdstr[4] + "," + tdstr[5] + "," + tdstr[6] + "," + tdstr[7] + "," + tdstr[8] + "," + tdstr[9]); arrtdsd.ToArray(); } var tdsd=arrtdsd.Distinct().ToArray(); var combine = krsd.Concat(tdsd) // 合并 .Distinct() // 去掉重复项 .ToArray();
// 通过Linq进行left join, 得到数组A var Kre = (from cItem in combine join aItem in krsd on cItem equals aItem into ps from p in ps.DefaultIfEmpty() select p).ToArray();
// 通过Linq进行left join, 得到数组B var TD = (from cItem in combine join bItem in tdsd on cItem equals bItem into ps from p in ps.DefaultIfEmpty() select p).ToArray();
JObject newkr = new JObject();//新——客人 JObject newtd = new JObject();//新——团队 JArray jkt = new JArray();//新—客人 JArray jtd = new JArray();//新——团队 string[] ku = new string[] { }; for (int i = 0; i < Kre.Length; i++) { newkr = new JObject();//新——客人 ku = new string[] { }; string j = Kre[i]; if (string.IsNullOrEmpty(j)) { newkr.Add("krname", ""); newkr.Add("krsex", ""); newkr.Add("krmobile", ""); newkr.Add("krsfz", ""); newkr.Add("krvisa", ""); newkr.Add("krtypepass", ""); newkr.Add("kren", ""); newkr.Add("krcountry", ""); newkr.Add("krhit", ""); newkr.Add("krguestuu", "");
} else { ku = j.Split(','); newkr.Add("krname", ku[0]); newkr.Add("krsex", ku[1]); newkr.Add("krmobile", ku[2]); newkr.Add("krsfz", ku[3]); newkr.Add("krvisa", ku[4]); newkr.Add("krtypepass", ku[5]); newkr.Add("kren", ku[6]); newkr.Add("krcountry", ku[7]); newkr.Add("krhit", ku[8]); newkr.Add("krguestuu", ku[9]); } jkt.Add(newkr); } string[] kutt = new string[] { }; for (int k = 0; k < TD.Length; k++) { newtd = new JObject();//新——团队 kutt = new string[] { }; string ty = TD[k]; if (string.IsNullOrEmpty(ty)) { newtd.Add("tdname", ""); newtd.Add("tdsex", ""); newtd.Add("tdmobile", ""); newtd.Add("tdsfz", ""); newtd.Add("tdvisa", ""); newtd.Add("tdtypepass", ""); newtd.Add("tden", ""); newtd.Add("tdcountry", ""); newtd.Add("tdhit", ""); newtd.Add("tdguestuu", "");
} else { kutt = ty.Split(','); newtd.Add("tdname", kutt[0]); newtd.Add("tdsex", kutt[1]); newtd.Add("tdmobile", kutt[2]); newtd.Add("tdsfz", kutt[3]); newtd.Add("tdvisa", kutt[4]); newtd.Add("tdtypepass", kutt[5]); newtd.Add("tden", kutt[6]); newtd.Add("tdcountry", kutt[7]); newtd.Add("tdhit", kutt[8]); newtd.Add("tdguestuu", kutt[9]); } jtd.Add(newtd); } #endregion #region //string kr = ""; // string dt = ""; // string zo = ""; //int cont = (arrtdsd.Count) + (arrkrsd.Count); //string[] xarr = new string[cont]; //arrkrsd.CopyTo(xarr, 0); //arrtdsd.CopyTo(xarr, arrkrsd.Count);//将两个数组合并为一个新数组 //List<string> list = new List<string>(); //for (int i = 0; i < xarr.Length; i++)//删除重复元素 //{ // if (list.IndexOf(xarr[i].ToLower()) == -1) // list.Add(xarr[i]); //} //for (int i = 0; i < list.Count; i++) //{ // bool tl = false; // zo = list[i].ToString(); // int a = zo.IndexOf(","); // string li = ""; // li = zo.Substring(0, a); // if (arrkrsd.Count > arrtdsd.Count) // {
// for (int j = 0; j < arrkrsd.Count; j++) // { // kr = arrkrsd[j].ToString(); // int n = kr.IndexOf(","); // string krtt = ""; // krtt = kr.Substring(0, n); // if (li == krtt) // { // tl = true; // newkr.Add("" + i + "", arrkrsd[j]); // } // if (tl == false) // { // newkr.Add("" + i + "", "" + "," + "" + "," + "" + "," + "" + "," + "" + "," + "" + "," + "" + "," + "" + "," + "" + "," + ""); // } // } // for (int t = 0; t < arrtdsd.Count; t++) // { // dt = arrtdsd[t].ToString(); // int tt = dt.IndexOf(","); // string dttt = ""; // dttt = dt.Substring(0, tt); // if (kr == dttt) // { // tl = true; // newtd.Add("" + i + "", arrtdsd[t]); // } // if (tl == false) // { // newtd.Add("" + i + "", "" + "," + "" + "," + "" + "," + "" + "," + "" + "," + "" + "," + "" + "," + "" + "," + "" + "," + ""); // } // } // } // else // { // for (int j = 0; j < arrtdsd.Count; j++) // { // dt = arrtdsd[j].First().ToString(); // for (int t = 0; t < arrkrsd.Count; t++) // { // kr = arrkrsd[t].First().ToString(); // if (dt == kr) // { // tl = true; // newkr.Add(arrkrsd[t]); // newtd.Add(arrtdsd[j]); // } // } // if (tl == false) // { // newtd.Add(arrtdsd[j]); // }
// } // } //} #endregion jo.Add("ker", jkt); jo.Add("td", jtd); return jo.ToString();
} //分隔数组 public static string[] SplitArray(string[] Source, int StartIndex, int Len) { string[] result = new string[Len]; for (int i = 0; i < Len; i++) { result[i] = i + StartIndex > Source.Length - 1 ? "" : Source[i + StartIndex]; } return result; } #endregion
两个string数组对应比较的更多相关文章
- 取两个String数组的交集
import org.testng.annotations.Test; import java.util.HashMap; import java.util.LinkedList; import ja ...
- 【.net】从比较两个字节数组谈起
上午,有位初学者朋友问:如何比较两个字节数组中各字节是否相等? 不许笑,我一向反对嘲笑初学者,初学者不认真学习时你可以批评,但不能讥嘲.你不妨想想,你自己开始学习编程的时候又是什么个光景? 好,于是, ...
- [转载]寻找两个有序数组中的第K个数或者中位数
http://blog.csdn.net/realxie/article/details/8078043 假设有长度分为为M和N的两个升序数组A和B,在A和B两个数组中查找第K大的数,即将A和B按升序 ...
- 关于String类和String[]数组的获取长度方法细节
一.在Java中,以下代码段有错误的是第( )行 public static void main(String[] args) { String name = "小新"; ...
- 【递归打卡2】求两个有序数组的第K小数
[题目] 给定两个有序数组arr1和arr2,已知两个数组的长度分别为 m1 和 m2,求两个数组中的第 K 小数.要求时间复杂度O(log(m1 + m2)). [举例] 例如 arr1 = [1, ...
- Leetcode#88. Merge Sorted Array(合并两个有序数组)
题目描述 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组. 说明: 初始化 nums1 和 nums2 的元素数量分别为 m ...
- 两个有序数组长度分别为m,n,最多m+n次查找找出相同的数
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- vb中去掉string数组的一部分
今天碰到一个问题,登陆的时候,如果不需要验证手机号为空,则不去验证手机号 因为登陆的时候所有的验证信息都存放在一个数组里 Dim CheckUserInfo() As String ={UserBir ...
- leetcode实践:找出两个有序数组的中位数
题目 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2. 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n)). 代码实现 package com. ...
随机推荐
- Python即时网络爬虫项目启动说明
作为酷爱编程的老程序员,实在按耐不下这个冲动,Python真的是太火了,不断撩拨我的心. 我是对Python存有戒备之心的,想当年我基于Drupal做的系统,使用php语言,当语言升级了,推翻了老版本 ...
- SQL中什么叫模式
模式(schema) 是 数据库体系结构中的一个节点对于 SQL Server 数据库来说.访问具体的一个表,可以由 4个部分组成分别为 服务器名, 数据库名,模式名,表名.对于访问本地的数据库因为 ...
- iOS -多字体混合
label 加下划线 UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 100, 300, 100)]; label.b ...
- 图片以BLOB存储在后台数据库中,Android客户端要进行读取显示
解决方法: 1:在后台以InputStream的方式将图片从数据库中读出: public static InputStream getPicInputStream(){ String id = &qu ...
- POJ 1379 Run Away
题意:有n个陷阱,在X,Y范围内要求出一个点使得这个点到陷阱的最小距离最大. 思路:模拟退火,随机撒入40个点,然后模拟退火随机化移动. (这题poj坑爹,加了srand(time(NULL))不能交 ...
- SuperSpider——打造功能强大的爬虫利器
SuperSpider——打造功能强大的爬虫利器 1.爬虫的介绍 图1-1 爬虫(spider) 网络爬虫(web spider)是一个自动的通过网络抓取互联网 上的网页的程序,在当今互联网 中 ...
- 简单实用后台任务执行框架(Struts2+Spring+AJAX前端web界面可以获取进度)
使用场景: 在平常web开发过程中,有时操作员要做一个后台会运行很长时间的任务(如上传一个大文件到后台处理),而此时前台页面仍需要给用户及时的进度信息反馈,同时还要避免前台页面超时. 框架介绍: 本架 ...
- HDU1841——KMP算法
这个题..需要对KMP的模板理解的比较透彻,以前我也只是会套模板..后来才知道..之会套模板是不行的..如果不能把握模板的每一个细节`,至少能搞清楚模板的每一个模块大体是什么意思.. 题意是给出两个串 ...
- Linux权限管理(笔记)
权限管理:r: w:x: 三类用户:u: 属主g: 属组o: 其它用户 chown: 改变文件属主(只有管理员可以使用此命令)# chown USERNAME file,... -R: 修改目录 ...
- How to uninstall (remove) JAVA from OS X Lion
Open terminal (Applications -> Utilities -> Terminal) To remove JVM enter folowing: sudo rm -r ...