钳位中的子串或分裂字

时间:2014-01-16 10:30:29

标签: c# arrays string split substring

我需要一个解决方案来解决我的问题。我有一个像:

这样的条款
  

大家好我很酷(测试)

现在我需要一种有效的方法来仅拆分括号中的部分,结果应为:

  

测试

我的尝试是将字符串拆分为。但我不认为这是最好的方式。

string[] words = s.Split(' ');

5 个答案:

答案 0 :(得分:4)

我不认为分裂是你问题的解决方案

正则表达式非常适合提取数据。

using System.Text.RegularExpression;
...
string result = Regex.Match(s, @"\((.*?)\)").Groups[1].Value;

这应该可以解决问题。

答案 1 :(得分:1)

假设:

var input = "Hello guys I am cool (test)";

..非正则表达版:

var nonRegex = input.Substring(input.IndexOf('(') + 1, input.LastIndexOf(')') - (input.IndexOf('(') + 1));

..正则表达式版本:

var regex = Regex.Match(input, @"\((\w+)\)").Groups[1].Value;

答案 2 :(得分:0)

您可以使用正则表达式:

string parenthesized = Regex.Match(s, @"(?<=\()[^)]+(?=\))").Value;

以下是对正则表达式模式的各个部分的解释:

  • (?<=\()((从比赛中排除)
  • 的后视
  • [^)]+:由)
  • 以外的任何字符组成的字符序列
  • (?=\)):预测)(从比赛中排除)

答案 3 :(得分:0)

最有效的方法是使用字符串方法,但不需要Split,而是SubstringIndexOf。请注意,这只是在括号中找到一个单词:

string text = "Hello guys I am cool (test)";
string result = "--no parentheses--";
int index = text.IndexOf('(');
if(index++ >= 0) // ++ used to look behind ( which is a single character
{
    int endIndex = text.IndexOf(')', index);
    if(endIndex >= 0)
    {
        result = text.Substring(index, endIndex - index);
    }
}

答案 4 :(得分:-2)

string s = "Hello guys I am cool (test)";
var result = s.Substring(s.IndexOf("test"), 4);