如何仅从字符串中删除某些特定字符之前

时间:2019-05-31 15:23:35

标签: c# string

我有一个带括号的字符串。我想编写一个函数来删除括号(如果存在)以及仅在逗号前出现的内容。有时在我的字符串中,字符串中可能有不止一组括号;但我只想删除括号前的集合。

df <- structure(list(ID = c("A", "A", "A", "A", "A", "A", "A", "B", 
"B", "B"), Year = c(2007, 2008, 2009, 2013, 2014, 2015, 2016, 
2010, 2012, 2013)), class = "data.frame", row.names = c(NA, -10L
))

2 个答案:

答案 0 :(得分:0)

如果您不想使用正则表达式:

var string2 = "Dog (medium) (black), 1";
    string2 = string2.Replace(string2.Substring(string2.LastIndexOf('(') - 1, string2.LastIndexOf(')') - string2.LastIndexOf('(') + 2), "");

答案 1 :(得分:0)

您可以使用Regex来执行这种字符串操作。例如:

Regex regex = new Regex(@"\s\([^\(\)]+\)(?=,)");

var inputs = new[] {
    "Dog (small) (brown), 1",
    "Dog (medium) (black), 1",
    "Dog (big), 0"
};

foreach (var input in inputs)
    Console.WriteLine(regex.Replace(input, ""));

// will output:
// Dog (small), 1
// Dog (medium), 1
// Dog, 0

这是该模式的含义:

\s将与空格匹配,以删除括号之前的空格。

\(将与左括号匹配(斜杠转义,因为括号在正则表达式中具有含义)

[^\(\)]+是一个字符集-^取反,表示除左括号或右括号之外的任何内容-这是为了匹配一对括号中的内容,并避免匹配这两对括号。 +是一个表示一次或多次的量词。

\)将与右括号匹配

(?=,)是一个积极的展望。上面说的是必须先加上逗号。