我需要一个解决方案来解决我的问题。我有一个像:
这样的条款大家好我很酷(测试)
现在我需要一种有效的方法来仅拆分括号中的部分,结果应为:
测试
我的尝试是将字符串拆分为。但我不认为这是最好的方式。
string[] words = s.Split(' ');
答案 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
,而是Substring
和IndexOf
。请注意,这只是在括号中找到一个单词:
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);