是否有与.NET中的TaxonomyItem.NormalizeName方法等效的方法

时间:2018-01-25 12:01:28

标签: c# unicode sharepoint-2010 taxonomy csom

我想知道TaxonomyItem. NormalizeName中是否存在来自SharePoint的C#方法的等效方法。

该方法位于命名空间Microsoft.SharePoint.Taxonomy中,但仅在SharePoint服务器本身上可用。在我看来,CSOM的{​​{1}}没有相应的方法。

该函数本身会将某些字符转换为unicode字符。最好的例子是SharePoint 2010符号。在分类中,角色存储为全宽&符号。

以下是一个例子:

&

存储在SharePoint中,如下所示:

Lisa & Tom

例如,如果您想在客户端应用程序中的服务器上放置Lisa & Tom 并且搜索字符串中包含这样的特殊字符,则CAML query将找不到任何相应的结果。

目前我们用一个简单的自编函数来解决它,这个函数并不完整,因为我们不知道所有转换为unicode的字符。

以下是将此代码或等效函数用于CAML query的更好方法:

TaxonomyItem. NormalizeName

2 个答案:

答案 0 :(得分:2)

关于:

  

在我看来,SharePoint 2010的CSOM没有   相应的方法。

我还没有找到任何证据,至少Microsoft documentation表示它在SharePoint 2010 CSOM API中受支持,以下是如何使用它的示例:

var name = "Lisa & Tom";
var result = TaxonomyItem.NormalizeName(ctx, name);
ctx.ExecuteQuery();
Console.WriteLine(result.Value);

其中ctxClientContext

的实例

但如果您不喜欢依赖于SharePoint库,那么这里是.Net版本:

public static string NormalizeName(string name)
{
    if (name == null)
       return null;
    var trimSpacesRegex = new Regex("\\s+", RegexOptions.IgnoreCase | RegexOptions.Compiled);
    return trimSpacesRegex.Replace(name, " ").Replace('&', '&').Replace('"', '"');
}

答案 1 :(得分:0)

您可能正在寻找String.Normalize()

  

返回一个新字符串,其二进制表示形式为特定的Unicode规范化形式。