代码之家  ›  专栏  ›  技术社区  ›  user3378165

打印mvc helper方法中每个单词的第一个字母[副本]

  •  0
  • user3378165  · 技术社区  · 6 年前

    我在MVC视图上有一个helper方法,它返回用户的名字和姓氏(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 回复  |  直到 6 年前
        1
  •  2
  •   Patrick Hofman Wahid Bitar    6 年前

    ToString 工作),使用字符串构造函数。这已经提到了 here .

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

    @(new string(@AccountName().ToString().Split(' ').Select(x => x[0]).ToArray()))
    
        2
  •  0
  •   tigerswithguitars    6 年前

    我会用一个干净的正则表达式;

    // 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");
    

    这也将包括姓名的首字母和 .

        3
  •  0
  •   Arvind Chourasiya    6 年前

    你也可以试试这个

    foreach (string s in @AccountName.Split(" ".ToCharArray()))
        shortName += s.Substring(0,1).ToUpper();