在字符串中填写准确的模式
Fill exact pattern in String
我有一个文本框。文本框包含一个 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);
}
也许我的问题有一个完全不同的解决方案,我没有考虑过。提前谢谢你。
//编辑:使用 WindowsForms。
正如您所说,MaskedTextbox 是我需要的提示。
如果其他人有同样的问题,这是我基于 Panagiotis Kanavos 的回答的解决方案。非常感谢。
MaskBox.Mask = "{00000000-0000-0000-0000-000000000000}";
MaskBox.PromptChar = '0';
并且,为了确保我始终获得完整的 GUID,即使未填充,我也将空格替换为零:
MaskBox.Text.Replace(" ", "0");
因为您只能从文本框中取回填充的部分,例如:
0123____-____-____-3210_____
感谢您的支持。我会把你的答案标记为正确的,但你发表了评论。
最诚挚的问候
我有一个文本框。文本框包含一个 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);
}
也许我的问题有一个完全不同的解决方案,我没有考虑过。提前谢谢你。
//编辑:使用 WindowsForms。
正如您所说,MaskedTextbox 是我需要的提示。 如果其他人有同样的问题,这是我基于 Panagiotis Kanavos 的回答的解决方案。非常感谢。
MaskBox.Mask = "{00000000-0000-0000-0000-000000000000}";
MaskBox.PromptChar = '0';
并且,为了确保我始终获得完整的 GUID,即使未填充,我也将空格替换为零:
MaskBox.Text.Replace(" ", "0");
因为您只能从文本框中取回填充的部分,例如: 0123____-____-____-3210_____
感谢您的支持。我会把你的答案标记为正确的,但你发表了评论。
最诚挚的问候