Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从字符串中删除精确的数值_C#_Asp.net_Regex - Fatal编程技术网

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

C# 从字符串中删除精确的数值,c#,asp.net,regex,C#,Asp.net,Regex,在asp.net中,字符串中有一些值,如下所示: 1、12123、21、23256等 我想,如果我想删除1,那么只有1应该从列表中删除,如果我想删除12,那么只有12号应该从列表中删除 由于这个按钮上会有大量用户,因此代码所花费的时间应该非常少。使用字符串 replace()和regex,1和12的所有事件都已更改 我尝试了以下方法: string llist2 = "1,12,123,23,21"; string[] vals = llist2.Split(','); int numtorem

在asp.net中,字符串中有一些值,如下所示:

1、12123、21、23256等

我想,如果我想删除1,那么只有1应该从列表中删除,如果我想删除12,那么只有12号应该从列表中删除

由于这个按钮上会有大量用户,因此代码所花费的时间应该非常少。使用字符串

replace()和regex,1和12的所有事件都已更改

我尝试了以下方法:

string llist2 = "1,12,123,23,21";
string[] vals = llist2.Split(',');
int numtorem = 1;
vals = Array.FindAll(vals, val => val != numtorem).ToArray();
在这里,VAL是一个字符串数组,因此无法工作。 然后我尝试了
int[]vals=llist2.Split(',')但是llist2是一个字符串,所以它不会转换。若我为转换添加了更多的代码,那个么代码执行将过多,页面将由于大量用户并行工作而变得缓慢

注意:llist2中的字符串来自使用select查询的数据库。我希望我不会被要求分享选择查询代码太多


别担心,兄弟,这里的人习惯于快速否决帖子,而不是帮助: 以下是您的解决方案:

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();

希望这有帮助。

您可以直接拆分到
列表
并删除该号码

List<int> vals = llist2.Split(',').Select(Int32.Parse).ToList();
vals.Remove(numtorem);
List vals=llist2.Split(',).Select(Int32.Parse.ToList();
VAL.移除(numtorem);

我认为,最好转换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()));
像这样

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();

如果您不想将列表转换为整数,可以使用@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

1) 显示您的代码-不清楚您尝试了什么2)提供输入和输出字符串的示例-不清楚实际字符串的外观以及如何处理数字周围的逗号和空格您可以使用int列表吗?如果是这样,那么您可以使用
list.Remove(value)
来实现此行为。“我在字符串中有一些值”-是的,但为什么?将它们放在适当的结构中(如
列表
),以便您可以实际使用它们。包含逗号的数字列表来自数据库,它们存储在数据库的varchar列中。当用户单击某个按钮时,我需要从中删除一个数字(Ajax用于避免回发)。现在既然添加了代码,大家可以删除下一票并回答这个问题吗?
Array.FindAll
返回一个数组。您不需要在此处创建另一个。您还可以使用
vals.Where(predicate)
而不是
Array.FindAll
来避免任何额外的数组creation@SergeyBerezovskiy你能根据你的提示发布相关代码吗?编辑只是为了简化。@ASh解决方案(已经消失)是在llist2的开头和结尾添加一个逗号,并将(“,“+num+”,”)替换为字符串。空,最后删除添加的逗号…是的,这就像一个符咒。谢谢。你正在将东西转换成字符串而不是整数,而精确的整数需要替换?更新了我的朋友