【问题标题】:padding the middle of a string填充字符串的中间
【发布时间】:2019-10-16 14:59:48
【问题描述】:

我有一个文本框字段,它接收一个字符数限制为 10 的字符串。我想实现一个速记版本,因为字符串中有很多零必须输入。所以字符串的一个例子是 T000028999。但 id 喜欢键入 T28999 并在“T”和“28999”之间填充零,并在文本框字段中显示为 T000028999 字符串。 这甚至可能吗?

我尝试在 google 上搜索示例,但只找到了填充字符串开头和结尾的方法。

【问题讨论】:

  • 规则是什么?它总是在前面的字母和最后的数字上吗?有可能是两个字母吗?
  • 只有一个字母和后面的数字。

标签: windows vb.net winforms visual-studio-2017


【解决方案1】:

您想保留第一个字符,因此您可以使用oldString.Chars(0) 来获得它。

您想要字符串的其余部分:oldString.Substring(1),您可以使用 PadLeft 选择的字符将其填充到所需的宽度,如下所示:

Dim newString = oldString.Chars(0) & oldString.Substring(1).PadLeft(9, "0"c)

最好先检查oldString 是否至少有1 个字符,否则.Chars(0) 会出错。

或者您可以插入所需数量的“0”的新字符串:

Dim newString = oldString.Insert(1, New String("0"c, 10 - oldString.Length))

执行格式化的好地方是控件的Validating 事件处理程序。 (TextChanged 事件处理程序不是一个好地方,因为它会干扰用户的输入。)


参考:

【讨论】:

  • 如果您粘贴在简写字符串中它可以工作,例如“T27399”,但是一旦您在文本框字段中输入结果是“T000000000”,它不允许您完成输入“27399”。
  • @Rufus7Ls 您希望文本框在什么事件中添加零?我猜你正在使用 TextChanged 事件,而 Validating 事件可能更有用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-24
  • 2018-11-14
  • 1970-01-01
相关资源
最近更新 更多