2010-03-12 37 views
4

我是新来的C#编程,我想问一个问题。在C中提取子字符串#

如何获取()中的值并将其存储在另一个字符串中。例如:
我有串

s1="here there (hi)"; 

我怎样才能得到

s2="hi"; 

()永远是在句子(从来没有在第一或之间)结束。

+0

你可以取消匹配 '(' 喜欢“这是harde(R比(不匹配 '(') – 2010-03-12 11:07:48

回答

8
string s1 = "abc (hi)"; 
string s2 = s1.Substring(s1.LastIndexOf("(") + 1, s1.LastIndexOf(")") - s1.LastIndexOf("(") - 1); 
+0

尼斯一个,真的! – Kangkan 2010-03-12 11:02:25

+2

记住这将如果抛出异常源字符串不包含括号 – fretje 2010-03-12 11:04:23

+0

此实现抛出一个ArgumentOutOfRangeException;子字符串的第二个参数应该是一个长度,而不是一个字符索引。 – 2010-03-12 12:07:20

2
string s2 = s1.Substring(s1.LastIndexOf("(") + 1, s1.LastIndexOf(")") - s1.LastIndexOf("(") - 1); 
2
string e1 = "here there (hi)"; 
//Extraction 
string s2 = e1.Substring(e1.IndexOf("(")+1, (e1.LastIndexOf(")") - e1.IndexOf("("))-1); 
+0

以上所有答案都是错误的他们会在括号内显示该单词...................... – perilbrain 2010-03-12 11:17:10