winforms 如何选择文本框值的前两个字符

ki1q1bka  于 2023-10-23  发布在  其他
关注(0)|答案(2)|浏览(104)

假设我有两个文本框,分别是textbox1和textbox2……
文本框1是公司名称。文本框2是公司代码或只是一个简短的名称....
如果我在文本框1中输入公司名称,如“Mangalam米尔斯pvt有限公司”,则应在文本框2中创建一个四个字母的短代码,如MMPL或MAMI.(所有初始字母均来自文本框1文本)
image请帮忙谢谢
我试着在Google上搜索,但没有找到。

vmpqdwk3

vmpqdwk31#

你需要使用String.SplitString.Concat

TextBox2.Text = 
    string.Concat(TextBox1.Text.Split().Select(t => t.First())).ToUpper(); // MMPL

如果你想要每个“单词”的前两个字符,用途:

TextBox2.Text = string.Concat(TextBox1.Text.Split()
    .Select(t => string.Concat(t.Take(2)))).ToUpper(); // MAMIPVLT

如果你想要前两个“单词”的前两个字符,用途:

TextBox2.Text = string.Concat(TextBox1.Text.Split().Take(2)
    .Select(t => string.Concat(t.Take(2)))).ToUpper(); // MAMI
fhity93d

fhity93d2#

你要的算法相对简单。你可以只在space上使用Split(),然后获取每个子字符串的第一个字符,使用ToUpper()将该字符转换为大写,然后使用Join()Concat()将其连接回字符串。

namespace MyProgram;

public class Program
{
    public static async Task Main(string[] args)
    {
        Console.WriteLine(GetShortName("Mangalam mills pvt ltd"));

    }

    public static string GetShortName(string companyName)
    {
        var namePartsInitials = companyName
            // we need to use RemoveEmptyEntries to avoid First() throwing an exception
            .Split(" ", StringSplitOptions.RemoveEmptyEntries)
            .Select(x => x.First().ToString().ToUpper()); // Call to Upper() here
        return string.Concat(namePartsInitials); // also possible to call ToUpper() here
        // or alternatively:
        // return string.Join(string.Empty, namePartsInitials);
    }
}

预期输出:

MMPL

我不确定这个短名字的目的是什么,但显然这个名字可能不是唯一的,也许(至少理论上)甚至由一个字母组成,所以你可能想考虑一下。
显然,您的输入将是textbox 1的值,您需要将该函数的返回值设置为textbox 2的值

相关问题