我想从以下类型的字符串中获取“; L0 |”和“; GTSet”之间的字符串值。
var str = test2.match(";L0|" + "(.*?)" + ";GTSet");
alert(str[1]);
这是我已经做过的事情。
{{1}}
这将从最开始直到“; GTSet”
返回一个字符串答案 0 :(得分:1)
我猜你从SharePoint搜索结果中获得了这个价值,对吧?如果是这样,根据Automatically created managed properties in SharePoint Server 2013:
托管元数据的数据格式。
要查询使用Managed Metadata字段标记的项目,您必须这样做 为每个标签使用唯一标识符。你可以找到独特的 术语库管理中术语集中每个术语的标识符 工具,在GENERAL选项卡上。另外,使用的数据格式 查询必须指定术语中的哪个级别设置查询 应该适用。通过添加以下之一来设置此规范 唯一标识符的前缀:
- 要查询使用字词
标记的所有项目GP0|#
- 查询使用term
子项标记的所有项目GPP|#
- 要查询使用术语集中的术语标记的所有项目:
GTSet|#
基于此信息,以下示例演示如何解析托管元数据的搜索结果值:
function parseTaxonomySearchResultValue(val){
var taxValue = {TermSetGuids: [], TermValues: []};
var parts = val.split(';');
parts.forEach(function(part){
if (part.startsWith("GP0|#")) //term?
{
var termGuid = part.replace("GP0|#", "");
taxValue.TermValues.push({ TermGuid: termGuid});
}
else if (part.startsWith("GTSet|#")) //term set?
{
taxValue.TermSetGuids.push(part.replace("GTSet|#", ""));
}
else if (part.startsWith("L0|#")) //Term with label?
{
var termParts = part.replace("L0|#0", "").split('|');
var termGuid = termParts[0];
var termLabel = termParts[1];
var result = taxValue.TermValues.filter(function(tv){
return tv.TermGuid == termGuid;
});
if (result.length == 0)
taxValue.TermValues.push({TermGuid : termGuid, Label : termLabel});
else
result[0].Label = termLabel;
}
});
return taxValue;
}
//Usage
var taxValue = 'GP0|#9d72d96c-407f-4e45-b2e6-9361faf5808a;L0|#09d72d96c-407f-4e45-b2e6-9361faf5808a|Travel;GTSet|#ac96f075-b7d2-4e90-8dc2-da8875f395fc';
var taxValue = parseTaxonomySearchResultValue(taxValue);
document.getElementById('output').innerHTML = "Term info:<br/>" + "Guid= " + taxValue.TermValues[0].TermGuid + "<br/> Label= " + taxValue.TermValues[0].Label;
<div id='output'/>