在asp.net中,我在字符串中有一些值,如下所示:
1,12,123,21,23,256等等
我希望如果我想删除1,那么只应该从列表中删除1,如果我想删除12那么只应从列表中删除12号。
由于此按钮上会有大量用户加载,因此代码应该花费的时间非常少。使用字符串
替换()和正则表达式,1 ans 12的所有出现都发生了变化。
我尝试了以下内容:
string llist2 = "1,12,123,23,21";
string[] vals = llist2.Split(',');
int numtorem = 1;
vals = Array.FindAll(vals, val => val != numtorem).ToArray();
这里,vals是一个字符串数组,所以它不会工作。
然后我尝试int[] vals = llist2.Split(',');
,但 llist2 是一个字符串,所以它不会转换。如果我为转换添加更多代码,那么代码执行将会太多,并且由于许多用户并行工作,页面将变得很慢。
注意:llist2中的字符串来自使用select查询的数据库。我希望我也不会被要求分享选择查询代码。
答案 0 :(得分:1)
我认为,最好转换1个数字(要删除的数字),然后是整个列表。 更新您的代码以将数字转换为字符串,就是这样
string llist2 = "1,12,123,23,21";
string[] vals = llist2.Split(',');
int numtorem = 1;
llist2 = String.Join(",", Array.FindAll(vals, val => val != numtorem.ToString()));
答案 1 :(得分:0)
不要担心兄弟,这里的人习惯于快速投票,而不是帮助: 以下是您的解决方案:
string llist2 = "1,12,123,23,21";
int[] vals = Array.ConvertAll(llist2.Split(','), int.Parse);
int numtorem = 1;
vals = Array.FindAll(vals, val => val != numtorem).ToArray();
希望这有帮助。
答案 2 :(得分:0)
您可以直接拆分为List<int>
并删除该号码。
List<int> vals = llist2.Split(',').Select(Int32.Parse).ToList();
vals.Remove(numtorem);
答案 3 :(得分:0)
喜欢这个
string llist2 = "1,12,123,23,21,1";
string[] vals = llist2.Split(',');
int numtorem = 1;
string[] results = Array.FindAll(vals, s => !s.Equals(Convert.ToString(numtorem))).ToArray();
答案 4 :(得分:0)
如果您不想将列表转换为整数,可以执行@ASh解决方案,或者这样:
string llist2 = "1,12,123,23,21";
int numtorem = 1;
llist2 = Regex.Replace(llist2, string.Format("^{0},|,{0}(,)|,{0}$", numtorem), "$1");
//"$1" is the first match group: (,) => string.Empty or ","
//Works fine with 1, 123, 21, etc...
//Console.WriteLine(llist2);
//Output 12,123,23,21