0

我正在使用 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]]

我想从上面的字符串(XC Information Management)中获取资源名称。
目前,我使用以下代码:

st.Split('=')[2].Replace(" start", ""); // return X.C. Information Management<br/>

我认为使用正则表达式以及,howerver,我没有任何想法来实现它。
如果可以,请你帮助我。

谢谢

4

3 回答 3

1

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

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

这里

在 C# 中,您可以执行以下操作:

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;

并且text将等于X.C. Information Management

编辑:好的 - 所以 OP 删除了<b>标签,但原理仍然非常相同。只需用您知道将出现在您要查找的字符串之前和之后的<b>适当标记替换标签。例如:

(?<=resource=).*(?=start)
于 2014-06-10T16:26:12.203 回答
1

您可以像这样使用正则表达式:

resource=(.*)\sstart=

该信息将在组中而不是在匹配的字符串中:

Regex.Match(input, "resource=(.*)\sstart=").Groups[1].Value
于 2014-06-10T16:35:32.293 回答
0

有趣...看起来 OP 已经从 MPXJ 检索了一个 Resource 实例,并且正在使用该toString()实例的方法来查看数据,例如:

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();

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

于 2014-06-27T13:52:22.800 回答