Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从资源分配中获取资源名称_C#_Regex_Mpxj - Fatal编程技术网

C# 如何从资源分配中获取资源名称

C# 如何从资源分配中获取资源名称,c#,regex,mpxj,C#,Regex,Mpxj,我正在使用MPXJ读取mpp文件。我有一个资源分配字符串,如下所示: string st = [[Resource Assignment task=Sign contract and update data resource= X.C. Information Management start=Thu Jun 09 08:00:00 ICT 2014 finish=Thu Jun 05 17: 00:00 ICT 2014 duration=32.0h workContour=null]] 我

我正在使用MPXJ读取mpp文件。我有一个资源分配字符串,如下所示:

string st = [[Resource Assignment task=Sign contract and update data resource=
X.C. Information Management start=Thu Jun 09 08:00:00 ICT 2014 finish=Thu Jun 05 17:
00:00 ICT 2014 duration=32.0h workContour=null]]
我想从上面的字符串(X.C.信息管理)中获取资源名称。
目前,我使用代码:

st.Split('=')[2].Replace(" start", ""); // return X.C. Information Management<br/>
st.Split('=')[2]。替换(“开始”,“开始”);//返回X.C.信息管理
我认为应该使用正则表达式,但是,我没有任何想法来实现它。
如果可以的话,请帮助我

谢谢

如果您想要的信息用粗体标记(
&
)包装,并且字符串中没有其他粗体标记,那么这个正则表达式应该可以工作:

(?<=<b>).*(?=<\/b>)

您可以使用如下正则表达式:

Regex regex = new Regex(@"(?<=<b>).*(?=<\/b>)");
string testString = @"*string st = [[Resource Assignment task=Sign contract and update data resource=<b>X.C. Information Management</b> start=Thu Jun 09 08:00:00 ICT 2014 finish=Thu Jun 05 17:00:00 ICT 2014 duration=32.0h workContour=null]]*";
string text = regex.Match(testString).Value;
resource=(.*)\sstart=
信息将位于组中,而不在匹配字符串中:

Regex.Match(input, "resource=(.*)\sstart=").Groups[1].Value

有趣的。。。看起来OP已从MPXJ检索到一个资源实例,并正在使用实例的
toString()
方法查看数据,例如:

(?<=resource=).*(?=start)
Project file;
// Some code to read the project

// Retrieve the first resource
Resource resource = file.getResourceByUniqueID(1);
string st = resource.toString();
这不是一个好主意。。。
toString()
方法仅用于提供调试信息

更好的方法是调用方法直接检索名称:

string st = resource.getName();

如果IDE没有为您提供,您可以找到MPXJ的API文档,它可以让您了解每个对象上可用的方法。

您需要的信息是否总是包装在
标记中?那总是唯一有这些标签的地方吗?你的输出中需要这些标签吗?@MattBurland:我已经编辑了代码。字符串不包含标记。我只需要字符串中的资源值,例如:X.C.信息管理,它没有回答我的其他问题。谢谢@Matt,但我只需要资源值。@lekimthi:这就是它给你的全部。