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