按每行开头不同的符号读取内容
假设一个 a.txt
里面有N行(每行文字不等,有可能还分段分行了),作为区分,每行前面一个不同的符号
!张三
@李四
#王五多大了
30岁
$赵钱
如何在VB的窗体中放几个文本框,按不同的符号加载该符号所在的行里的所有文字(剔除作为分段的符号,但不影响内容中可能存在的相同符号)
能实现吗?谢谢!!!
[解决办法]
还是弄完整了吧...
- VB code
'Form1内植入1个TextBox'Form1内植入1个CommandButton'变更Form1.ScaleMode = vbPixels'变更TextBox.Name 更名为 "txt"'变更txt.Index = 0 '物件Array(0)Private Type iDataType ID() As StringEnd TypePrivate iData() As iDataTypePrivate Sub Form_Resize() '物件排序 Dim i As Integer For i = 0 To txt.Count - 1 txt(i).Move 0, txt(0).Top + (txt(0).Height * i), Me.ScaleWidth, 100 Next 'i Command1.ZOrder 0 Command1.Move Me.ScaleWidth - Command1.Width, 0End SubPrivate Sub Command1_Click() Dim iStr As Variant, fStr As String Dim i As Long, j As Long i = FreeFile Open App.Path & "\a.txt" For Input As #i '读入"a.txt" iStr = StrConv(InputB(LOF(i), #i), vbUnicode) '一次读入整笔资料 Close #i iStr = Split(iStr, vbCrLf) '以vbCrLf分解iStr为Array ReDim iData(0): ReDim iData(0).ID(0) '初始化Array For i = 0 To UBound(iStr) If iStr(i) <> "" Then '对所有元素搜寻 fStr = Left(iStr(i), 1) '取得首字元 For j = 0 To UBound(iData) '对所有元素(0)搜寻 If iData(j).ID(0) = fStr Then '比对(0)元素,相同则加入 ReDim Preserve iData(j).ID(UBound(iData(j).ID) + 1) iData(j).ID(UBound(iData(j).ID)) = iStr(i) Exit For 'j End If Next 'j If j > UBound(iData) Then '如j>元素总值则一定为未寻获 ReDim Preserve iData(UBound(iData) + 1) '新增元素 ReDim Preserve iData(UBound(iData)).ID(1) iData(UBound(iData)).ID(0) = fStr '加入比对字元 iData(UBound(iData)).ID(1) = iStr(i) '加入字串 End If End If Next 'i For i = 1 To txt.Count - 1 '清除原载入元件 Unload txt(i) Next 'i For i = 1 To UBound(iData) '由txt(0)起依序填入字串 iStr = "" For j = 1 To UBound(iData(i).ID) '组合字串 iStr = iStr & Right(iData(i).ID(j), Len(iData(i).ID(j)) - 1) & vbCrLf '去除首字元 Next 'j If i = 1 Then txt(i - 1).Text = iStr '填入txt(0)内字串 Else Load txt(i - 1) '加入元件 txt(i - 1).Text = iStr '填入字串 txt(i - 1).Visible = True End If Next 'i Form_Resize '物件排序End Sub