我想从字符串中删除[number];
输入示例包括:
1 - 家庭住址[我的第一个家庭住址#12] [1350]
2 - 这里的一些文字(这里有一些文字)有些
3 - hello dolor sit amet [kost street#74] [1008]
输出的例子是:
1 - 家庭住址[我的第一个家庭住址#12]
2 - 这里的一些文字(这里有一些文字)有些
3 - hello dolor sit amet [kost street#74]
我尝试了什么
var pattern = @"^[\d+]$";
var result = Regex.Replace(value, pattern, "");
我想删除带有二次符号的粗体文字“ [”& “] ”如果根本不包含它,请保持原样(参见第二个示例)。
答案 0 :(得分:3)
您尝试过的模式"^[\d+]$
几乎是正确的!该模式的问题在于您正在使用锚点^...$
,它基本上表示模式只匹配括号中封装的数字(如果它们是输入中唯一的字符串)。 See the MSDN documentation on Anchors for a more technical summary.
模式\[\d+\]
将匹配方形括号中的任何数字。
使用Regex.Replace
: -
input = Regex.Replace(input, @"\[\d+\]", string.Empty);
答案 1 :(得分:1)
尝试以下方法:
input = "home address [my first home address #12] [1350]"
string pattern = @"\[\d+\]";
string replacement = " ";
Regex rgx = new Regex(pattern);
string result = rgx.Replace(input, replacement);
更新:(用一些代码更新问题后......)
var pattern = @"^[\d+]$";
此模式仅适用于数字。以下模式适合您:
var pattern = @"\[\d+\]";
答案 2 :(得分:0)
对于您的示例,您不需要正则表达式。
string address = "home address [my first home address #12] [1350]";
if(address.Count(x => x == '[') >= 2))
address = address.Substring(0, address.LastIndexOf('['));