在String中填充确切的模式

问题描述 投票:0回答:1

我有一个文本框。文本框包含guid的模式,如下所示:

{0000000-0000-0000-0000-000000000000}

我希望输入文本框的用户只用它们的值替换零。

F.E.我键入“ABC123456789”,GUID应该看起来像{ABC1234-5678-9000-0000-000000000000}

我尝试过类似的东西:

string tmp = "";
tmp = textBox1.Text.Substring(replaceIndex, 1);

if (textBox1.Text.Length > replaceIndex)
{
    Console.WriteLine(tmp);
    if (tmp == "-")
        replaceIndex++;

    textBox1.Select(replaceIndex, 1);
    replaceIndex++;
}

哪个部分有效。我有用户删除字符的问题。 F.E.如果我的GUID包含:{ABC1234-5 | 678-9000-0000-000000000000}

我的光标位于“|”。如果我按退格键(或标记子串f.e. C1234并按删除)我想删除5并再次替换为0。

我想我的索引遇到了一些麻烦,或者我的逻辑是完全错误的。如果是的话请告诉我。

我试图解决它:

if (e.KeyChar == (char)Keys.Back)
{
    replaceIndex--;
    int tmpIndex = replaceIndex;
    string xReplace = defaultGUID.Substring(tmpIndex, 1);
    textBox1.Text = textBox1.Text.Insert(tmpIndex, xReplace);
}

也许有一个完全不同的解决方案,我没有想到我的问题。先感谢您。

//编辑:使用Windows窗体。

c# replace guid
1个回答
1
投票

正如你所说MaskedTextbox是我需要的提示。如果其他人有同样的问题,这是我的解决方案基于Panagiotis Kanavos的答案。非常感谢你。

MaskBox.Mask = "{00000000-0000-0000-0000-000000000000}";
MaskBox.PromptChar = '0';

并且,为了确保我总是得到一个完整的GUID,即使没有填充,我用零替换空格:

MaskBox.Text.Replace(" ", "0");

因为您只从文本框中获取填充的部分,例如:0123 ____-____-____- 3210_____

感谢您的支持。我会将你的答案标记为正确,但你发表了评论。

最好的问候

© www.soinside.com 2019 - 2024. All rights reserved.