从字符串中删除精确的数值

时间:2017-03-16 11:28:14

标签: c# asp.net regex

在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查询的数据库。我希望我也不会被要求分享选择查询代码。

5 个答案:

答案 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