在MVC助手方法中打印每个单词的首字母

时间:2018-08-21 10:46:26

标签: c# asp.net-mvc razor

我在MVC视图上具有此帮助程序方法,该方法可返回用户的名字和姓氏(Windows身份验证的应用程序)

@helper AccountName()
{
    using (var context = new PrincipalContext(ContextType.Domain))
    {
        var principal = UserPrincipal.FindByIdentity(context, User.Identity.Name);
        @principal.GivenName<text> </text>@principal.Surname
    }
}

如何提取用户的姓名缩写(名字的首字母和姓的首字母)?

我尝试过linq:

@AccountName().ToString().Split(' ').Select(x => x[0]).ToArray()

但是结果是:

System.Char[]

任何帮助将不胜感激

3 个答案:

答案 0 :(得分:2)

如果要输出前一个字母作为字符串而不是字符数组(为了使ToString工作),请使用字符串构造函数。 here中已经提到了这一点。

但是,要使其正常工作,您确实需要将其包装在代码块(@(...))中。然后它将正确打印。

@(new string(@AccountName().ToString().Split(' ').Select(x => x[0]).ToArray()))

答案 1 :(得分:0)

我会使用整洁的Regex;

// This could be compiled and cached.
var initialsRegex = new Regex(@"(\b[a-zA-Z])[a-zA-Z]*\.* ?"); 

// This gives the initials
var initials = initialsRegex.Replace(AccountName, "$1");

这还将包括名称以.开头的姓名,即John S. Doe

答案 2 :(得分:0)

您也可以尝试

Dataset<Row> DS1 = spark.read().option("header",true).csv("path of the File");
Dataset<Row> DS2 = spark.read().option("header",true).csv("path of the File");
ArrayList<String> joinColList = new ArrayList<String>();
joinColList.add("CommonId");
Dataset<Row> joinedData = DS1.join(DS2,scala.collection.JavaConversions.asScalaBuffer(joinColList),"leftouter");
joinedData.show();