删除第一个和最后一个特定字符

时间:2018-09-15 18:23:18

标签: c# string

我不知道是否重复,但是我找不到相同的(也许我找不到,因为它有硬标题)

所以,我有一个字符串:

string a = "(Hello(World),World(Hello))";

我需要卸下第一个支架和最后一个支架。 并获得输出:

Hello(World),World(Hello)

我不需要删除第一个字符和最后一个字符。 我需要删除第一个特定字符(括号)和最后一个特定字符(右括号)。

也就是说,如果字符串是:

string a = "gyfw(Hello(World),World(Hello))";

输出为: gyfw Hello(World),World(Hello)

3 个答案:

答案 0 :(得分:1)

要删除第一个特定字符:

a = a.Remove(a.IndexOf("("), 1);

要删除最后一个特定字符:

a = a.Remove(a.LastIndexOf(")"), 1);

答案 1 :(得分:0)

使用String.Substring()方法删除特定字符。

因此,如果您的字符串存储在变量myval中:

myval = myval.Substring(1, myval.Length - 1);

答案 2 :(得分:0)

以一种平衡的方式,可以使用此正则表达式

找到@"\(((?>[^()]+|\((?<Depth>)|\)(?<-Depth>))*(?(Depth)(?!)))\)"
替换@"$1"

如果需要具有内部括号,请将*更改为+
如果要求只匹配一次并跨越字符串,则将^$分别添加到正则表达式的开头/结尾。

这是正则表达式解释

 \(                            #  Match ( a open parenth
 (                             # (1 start), Capture the core, to be written back

      (?>                           # Then either match (possessively):

           [^()]+                        # Any character except parenths
        |                              # or
           \(                            # Open (  increase the paren counter
           (?<Depth> )
        |                              # or
           \)                            # Close )  decrease the paren counter
           (?<-Depth> )
      )*                            # Repeat as needed.
      (?(Depth)                     # Assert that the paren counter is at zero.
           (?!)
      )

 )                             # (1 end)
 \)                            # Match ) a closing parenth