如何从c#中的字符串中删除数字字符

时间:2016-03-16 17:37:01

标签: c# .net

我有一个像字符串st ="12,34,56,345,12,45"这样的字符串,我希望从这个字符串中删除数字34我喜欢string newst = st.replace(",34","");但它从345删除34,如何防止这个 的修改 34可以在任何地方,这里我动态生成

4 个答案:

答案 0 :(得分:3)

这很简单:

var st ="12,34,56,345,12,45";
var newst = st.replace(",34,", ",");

如果它可以在任何地方,您可以使用the regular expression

var input = "34,234,35,36,34,37,345,34";
var pattern = @",?\b34\b,?";
var regex = new Regex(pattern);
var result = regex.Replace(input, ",").Trim(',');

较短的符号可能如下所示:

var result = Regex.Replace(input, @",?\b34\b,?", ",").Trim(',');

正则表达式的说明: ,?\b34\b,?匹配单词34,但前提是前后跟单词分隔符(因为单词边界元字符{{ 1}}),它可以(但不一定)以逗号开头和后跟,这要归功于\b,这意味着没有或多个逗号。

最后我们需要从字符串的开头和结尾删除可能的逗号,这就是结果,?的原因。

但我会说@ crashmstr的解决方案比尝试调整此特定用例的正则表达式更好。

答案 1 :(得分:2)

试试这个

string newst = st.replace(",34,",",");

当然,只有当您要替换的号码在两个逗号之间时才有效。如果您想要更高级的内容,请使用Regex.Replace()

以下是一个例子:

string temp = Regex.Replace(" 12,34,56,345,12,45",@" ^ 34,",""); string newst = Regex.Replace(temp,@" 34 $,","");

您还可以使用String.TrimStart.TrimEnd来清理边框。

另外,我喜欢crashmstr的例子。

答案 2 :(得分:2)

这将有效:

var oldString = "34,12,34,56,345,12,45,34";
var newString = String.Join(",", oldString.Split(',').Where(x => x != "34"));

我们在','上拆分,使用LINQ排除"34",然后通过','将字符串重新加入。

答案 3 :(得分:1)

拆分并在列表中工作:

string[] arr = st.Split(',');
List<string> list = arr.ToList();
list.Remove("34");

或正则表达式:

var replaced = Regex.Replace(st, @"\b34\b[,]","");