[英]How to get the user initials programmatically in Windows Forms
我可以得到这个文件夹:
C:\Users\XXX\Documents
从我的代码中:
string myDocuments =
Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
我需要获取userinitials (XXX)
,有没有一种很好的方法来获取它,例如MyDocuments
?
如果是这样,我宁愿使用这种干净的方法,而不是从文件夹路径中选择用户名。
您可以签出UserName属性:
string username = Environment.UserName;
使用Environment.UserName
获取当前登录到Windows操作系统的人员的用户名。
Office应用程序询问并存储缩写,但不询问Windows,因此,与其他帖子一样,使用Environment.UserName
然后,使用此扩展方法检索首字母(每个单词的第一个字母)
/// <summary>
/// Remove any special character and return the first letters of all words
/// </summary>
/// <param name="str">String to retrieve the initials from</param>
/// <returns></returns>
public static string GetInitials(this string str)
{
if (string.IsNullOrEmpty(str))
return str;
var space = ' ';
var previousWasSpace = true;
var buffer = new char[str.Length];
var index = 0;
foreach (char c in str)
{
if (c == space)
{
previousWasSpace = true;
}
else if (previousWasSpace && char.IsLetterOrDigit(c))
{
previousWasSpace = false;
buffer[index] = c;
index++;
}
}
return new string(buffer, 0, index);
}
此方法较旧,可能已经过优化
这是从用户名获取缩写的另一种方法(在此示例中,以空格或句点分隔):
foreach (string s in Environment.UserName.Split(" .".ToCharArray()))
userInitials += s.Substring(0,1).ToUpper();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.