c# - 删除字符串中最后一次出现的字符串

标签 c# string

我有一根天然的绳子

  • RTT(50)
  • RTT(A)(50)
  • RTT(A)(B)(C)(50)

我想要的是从字符串中删除最后一次出现的 () 。也就是说,如果字符串是 - RTT(50),那么我只想返回 RTT。如果是 RTT(A)(50),我希望返回 RTT(A) 等。

我如何实现这一点?我目前使用的是一种子字符串方法,无论如何都可以删除任何出现的 () 。我想到了使用:

Regex.Matches(node.Text, "( )").Count

为了计算出现的次数,我做了类似下面的事情。

 if(Regex.Matches(node.Text, "( )").Count > 1)
      //value = node.Text.Remove(Regex.//Substring(1, node.Text.IndexOf(" ("));
 else
     value = node.Text.Substring(0, node.Text.IndexOf(" ("));

else 部分将做我想做的。但是,如何删除 if 部分中的最后一次出现是我卡住的地方。

最佳答案

String.LastIndexOf方法可以满足您的需要 - 返回字符或字符串的最后一个索引。

如果您确定每个字符串都至少有一组括号:

var result = node.Text.Substring(0, node.Text.LastIndexOf("("));

否则,您可以测试 LastIndexOf 的结果:

var lastParenSet = node.Text.LastIndexOf("(");

var result =
    node.Text.Substring(0, lastParenSet > -1 ? lastParenSet : node.Text.Count());

关于c# - 删除字符串中最后一次出现的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23556020/

相关文章:

c# - 使用表达式 lambda 进行异常处理

c# - 在 Windows 8 桌面应用程序上使用 MediaCapture

javascript - 无法使用外部 Url 加载 div

Java FileOutputStream 字符串写入

java - 比较顺序是否存在差异?

Java 编译错误缺少 return 语句。需要澄清

c# - IQueryable 对两个唯一 id 匹配的金额求和 C#

c# - 强命名程序集在我的 Visual C# 中不起作用

java - 如何通过正则表达式删除 URL 的某些部分?

python - 字符串作为关键字参数,并将来自 str.partition() 输出的多个字典合并为一个字典