如何使用Regex替换名称空间或类型列表

时间:2013-08-29 09:52:09

标签: c# .net regex

这是我的代码:

string _type="System.Collections.Generic.List<PhilpostDB.ViewModel.Person>";
_type = Regex.Replace(_type, @"[.\w]+\.(\w+)", "$1"); // this result=List<Person>

我想要结果:_type = PhilpostDB.ViewModel.Person

2 个答案:

答案 0 :(得分:1)

仅适用于字符串方法:

string _type = "System.Collections.Generic.List<PhilpostDB.ViewModel.Person>";
string[] tokens = _type.Split('<');
string result = tokens[0].Split('.').Last();
if (tokens.Length > 1)
{
    string token2 = tokens.Last().Split('.').Last();
    result = string.Format("{0}<{1}", result, token2);
}

Demo

编辑谢谢蒂姆,但如果我想要结果= PhilpostDB.ViewModel.Person?

string genericType = _type.Split('<').Last().TrimEnd('>');

答案 1 :(得分:1)

搜索:

[^<]+\<([^>]+)\>

并替换为:

$1

即:

_type = Regex.Replace(_type, @"[^<]+\<([^>]+)\>", "$1");