我正在使用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/>
我认为使用正则表达式,但是,我没有任何想法来实现它 如果可以,请帮助我。
由于
答案 0 :(得分:1)
如果您想要的信息包含在粗体标记中(<b>
&amp; </b>
),并且您的字符串中没有其他粗体标记,则此正则表达式应该工作:
(?<=<b>).*(?=<\/b>)
请参阅here
在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)
答案 1 :(得分:1)
您可以像这样使用正则表达式:
resource=(.*)\sstart=
信息将在不在匹配字符串中的组中:
Regex.Match(input, "resource=(.*)\sstart=").Groups[1].Value
答案 2 :(得分: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 here的API文档,它可以让你了解每个对象的可用方法,如果你没有为你提供这个。