[英]Clipboard data sort in VB.NET
我有一个表单,我需要在其中将剪贴板中的文本分类到适当的字段中。 本质上,我复制了一封客户电子邮件,单击表单上的按钮,它将读取数据并将信息放入字段中。 有几个字段,例如客户姓名、公司名称、电话号码、他们是否有支持计划。
所有电子邮件的格式都相同(除了我无法控制的随机空格),并被几名员工使用:
公司:TEST LTD
客户姓名:乔·约翰逊
部门:IT运营经理
客户电话:012345678910
客户邮箱:JOE.JOHNSON@TEST.COM
仪器:SUP
序列号:EM2PC2938C
覆盖范围:计划无保修
所以,我的问题是:
我需要能够直接从电子邮件中复制此文本,单击一个按钮来查看剪贴板中的文本,然后将不同的信息放入与电子邮件中标记相同的不同文本框中,但没有标识符(例如“电子邮件:”或“覆盖范围”),因此基本上是冒号进入文本框之后的任何内容。
我有一些代码来获取数据并放入我计划用来对数据进行排序的富文本框中(我知道我可以直接从代码中完成,但不知道如何进行)
rtbx_ClipboardData.text = Clipboard.GetText
还有一些代码来删除冒号前的任何文本:
tbx_Data_Company.Text = rtbx_ClipboardData.Text.Substring(rtbx_ClipboardData.Text.IndexOf(":") + 1)
此代码有效,但我需要多次执行并将数据放入适当的字段中,这正是我苦苦挣扎的地方。
如果有人可以提出任何建议/提供一些示例代码,我将不胜感激。
而不是.Substring
和.IndexOf
,我会使用String.Split
。
从剪贴板上获取字符串并将其拆分为行,删除任何空行。 获取结果数组的每个元素(一行)并用冒号分割。 我们希望此数组 (1) 的第二个元素去除任何前导或尾随空格并分配给适当的文本框。 然后对每一行重复。
Private Sub GetFieldsFromEmail()
Dim eText As String = Clipboard.GetText()
Dim lines = eText.Split({Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries)
txtCompany.Text = lines(0).Split(":"c)(1).Trim
txtName.Text = lines(1).Split(":"c)(1).Trim
txtDepartment.Text = lines(2).Split(":"c)(1).Trim
txtPhone.Text = lines(3).Split(":"c)(1).Trim
txtEmail.Text = lines(4).Split(":"c)(1).Trim
txtInstrument.Text = lines(5).Split(":"c)(1).Trim
txtSerNum.Text = lines(6).Split(":"c)(1).Trim
txtCoverage.Text = lines(7).Split(":"c)(1).Trim
End Sub
编辑
如果前后有随机文本...
Private Sub GetFieldsFromEmail()
Dim eText As String = Clipboard.GetText()
Dim lines = eText.Split({Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries)
Dim StartLine As Integer
For i = 0 To lines.Count - 1
If lines(i).StartsWith("Company") Then
StartLine = i
Exit For
End If
Next
TextBox18.Text = lines(StartLine).Split(":"c)(1).Trim
TextBox19.Text = lines(StartLine + 1).Split(":"c)(1).Trim
TextBox20.Text = lines(StartLine + 2).Split(":"c)(1).Trim
TextBox21.Text = lines(StartLine + 3).Split(":"c)(1).Trim
TextBox22.Text = lines(StartLine + 4).Split(":"c)(1).Trim
TextBox23.Text = lines(StartLine + 5).Split(":"c)(1).Trim
TextBox24.Text = lines(StartLine + 6).Split(":"c)(1).Trim
TextBox25.Text = lines(StartLine + 7).Split(":"c)(1).Trim
End Sub
我刚刚添加了一个 For 循环来查找从哪里开始读取数据。 通过直接从您的问题中复制数据前后的几个段落进行测试。 我更改了文本框的名称以匹配我可用的内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.