如何基于TextBox1的公司名生成四位首字母短码至TextBox2?
解决方案(以C# WinForms为例)
核心逻辑
- 监听
TextBox1的TextChanged事件,实时响应输入内容 - 将输入的公司名称按空格拆分,过滤掉连续空格产生的空字符串
- 提取每个有效单词的首字母并转为大写
- 根据单词数量生成四位短码:
- 单词数≥4:取前4个单词的首字母拼接
- 单词数<4:先拼接所有首字母,再从第一个单词补充后续字母(或重复首字母)补至四位
具体代码实现
先在设计器中双击TextBox1自动生成TextChanged事件方法,然后写入以下代码:
private void TextBox1_TextChanged(object sender, EventArgs e) { string companyName = TextBox1.Text.Trim(); if (string.IsNullOrEmpty(companyName)) { TextBox2.Text = string.Empty; return; } // 拆分单词并过滤空值 string[] words = companyName.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); List<char> initials = new List<char>(); // 提取每个单词的首字母(大写) foreach (string word in words) { if (!string.IsNullOrEmpty(word)) { initials.Add(char.ToUpper(word[0])); } } StringBuilder shortCode = new StringBuilder(); int wordCount = initials.Count; if (wordCount >= 4) { // 取前4个单词的首字母 for (int i = 0; i < 4; i++) { shortCode.Append(initials[i]); } } else { // 先拼接所有首字母 shortCode.Append(string.Join("", initials)); if (shortCode.Length < 4 && words.Length > 0) { string firstWord = words[0].ToUpper(); int needChars = 4 - shortCode.Length; // 从第一个单词的第2个字符开始补充 for (int i = 1; i < firstWord.Length && needChars > 0; i++) { shortCode.Append(firstWord[i]); needChars--; } // 若仍不足,重复首字母补全 while (needChars > 0) { shortCode.Append(initials[0]); needChars--; } } } TextBox2.Text = shortCode.ToString(); }
效果示例
- 输入
Mangalam mills pvt ltd→ 生成MMPL - 输入
Mangalam Advanced Manufacturing Industries Pvt Ltd→ 生成MAMI - 输入
ABC Company→ 生成ABCC - 输入
XYZ→ 生成XYZX
可调整项
如果需要不同的补全规则(比如优先取后续单词的完整字母),可以修改单词数不足4时的逻辑代码。
内容的提问来源于stack exchange,提问作者wasim khan
相关产品推荐
相关产品推荐

