注册 登录
编程论坛 VB6论坛

如何判断一个字符串中是否包含特定字符串 并标记出来

easonchou 发布于 2017-10-13 00:05, 9492 次点击
举例
a=西瓜1 菠萝5  蜜桃3
b=菠萝 桔子 西瓜 番茄 苹果 柚子
首先判断a中的水果是否都在b中,b中没有蜜桃,最终返回的结果是“西瓜1 菠萝5  蜜桃3”蜜桃标记为红色加粗字体 其余不变。
帮忙写一段详细的代码,非常感谢。
14 回复
#2
xiangyue05102017-10-13 08:37
本论坛严禁求代码,帮作业的帖子。
但是欢迎就具体的问题求思路、讨论。
#3
ZHRXJR2017-10-13 10:11
非常简单:
只有本站会员才能查看附件,请 登录

程序代码:
Private Sub Form_Load()
Dim A, B, I As Integer, J As Integer, C() As String
A = Array("西瓜1", "菠萝5", "蜜桃3")
B = Array("菠萝", "桔子", "西瓜", "番茄", "苹果", "柚子")
ReDim C(0 To UBound(A))    'C的下标应该与A的下标相同
For I = 0 To UBound(A)
    For J = 0 To UBound(B)
        If InStr(1, A(I), B(J), 1) > 0 Then
        C(I) = "存在"
        End If
    Next J
Next I
For I = 0 To UBound(A)
If C(I) = "存在" Then
Label1.Caption = Label1.Caption & A(I) & Space(6)
ElseIf C(I) = "" Then
Label2.Caption = Label2.Caption & A(I) & Space(6)
End If
Next I
End Sub
#4
easonchou2017-10-15 00:02
感谢版主的代码,可能我的意思没有表达清楚
[local]1[/local]
在Text1里面输入“西瓜1 菠萝5 蜜桃3”
按下Command1,Text2得到的结果是“西瓜1 菠萝5 蜜桃3
Text1里面输入的数据后面都带有空格,但是数量是不确定的,有可能是“西瓜1 菠萝5 蜜桃3”,也有可能是“西瓜2 桔子1 蜜桃4 番茄3”,得出的结果是“西瓜2 桔子1 蜜桃4 番茄3”
也就是说在你的代码里面A的数据和个数都是不确定的,B是确定的。

[此贴子已经被作者于2017-10-15 00:03编辑过]

#5
easonchou2017-10-15 00:02
只有本站会员才能查看附件,请 登录
#6
xyxcc1772017-10-15 06:23
文本框字体颜色只能是一种
#7
easonchou2017-10-15 08:30
除了文本框 还有什么控件输出后是可以编辑的呢?
#8
ZHRXJR2017-10-15 08:51
回复 4楼 easonchou
Text1中是原始数据,比较的是Text2中的数据,那么你可以将Text1的数据分割到数组A中,数组B是一定的吧。
将分割数组A的代码及我发给你的代码均放在 Command1_Click 事件中就可以了呀。
另外,一个文本框中只能显示一种字体与颜色,一个文本框不可能显示不同的颜色与字体
除非你使用 wp231957 所说的富文本框。

[此贴子已经被作者于2017-10-15 09:17编辑过]

#9
wp2319572017-10-15 09:00
RICHTEXT ??
#10
easonchou2017-10-16 00:31
回复 8楼 ZHRXJR
标签不是也只能显示一种颜色么,请问你是怎么把标签1和标签2无缝组合到一起去的呢
另外我按照你的思路把文本框里的数据提取到数组里面了,但是效果和你原本的代码不一样,只要和数组B里面的一个字相同,就到标签1里面去了,帮忙再看一下,谢谢
程序代码:
Private Sub Command1_Click()
Dim B, I As Integer, J As Integer, C() As String, D() As String
Label1.Caption = ""
Label2.Caption = ""
Text1.Text = Replace(Text1.Text, " ", ",")
D() = Split(Text1.Text, ",")
'Print D(3)
B = Array("菠萝", "桔子", "西瓜", "番茄", "苹果", "柚子")
ReDim C(0 To UBound(D))    'C的下标应该与A的下标相同
For I = 0 To UBound(D)
    For J = 0 To UBound(B)
        If InStr(1, D(I), B(J), 1) > 0 Then
        C(I) = "存在"
        End If
    Next J
Next I
For I = 0 To UBound(D)
If C(I) = "存在" Then
RichTextBox1.Text = Label1.Caption & D(I) & Space(1)
ElseIf C(I) = "" Then
Label2.Caption = Label2.Caption & D(I) & Space(1)
End If
Next I
Text1.Text = Replace(Text1.Text, ",", " ")
End Sub
#11
ZHRXJR2017-10-16 10:01
标签也只能显示一种字体与颜色,下面是把标签1和标签2无缝组合到一起
程序代码:
Private Sub Form_Load()
Text1.Text = "西瓜1 菠萝5  蜜桃3 番茄4  苹果0 柚8"
Label1.Caption = ""
Label2.Caption = ""
'==========================
Label1.Width = 2415
Label1.Height = 800
Label1.FontBold = False   '标签1不是粗体
Label1.ForeColor = &H0   '标签1为黑色
Label2.Width = Label1.Width
Label2.Height = Label1.Height
Label2.Left = Label1.Left + Label1.Width   '标签2的位置紧接着标签1
Label2.Top = Label1.Top
Label2.FontBold = True   '标签2为粗体
Label2.ForeColor = &H1000FF   '标签2为红色
'
======以上是把标签1和标签2无缝组合到一起============
End Sub


Command1_Click事件基本没有问题,有点小小的改动:
程序代码:
Private Sub Command1_Click()
Dim B, I As Integer, J As Integer, C() As String, D() As String
Label1.Caption = ""
Label2.Caption = ""
B = Array("菠萝", "桔子", "西瓜", "番茄", "苹果", "柚子")
'Text1.Text = Replace(Text1.Text, " ", ",")   不需要将空格转换为逗号
D() = Split(Text1.Text, " ")   '判断空格就可以
For I = 0 To UBound(D)
D(I) = Trim(D(I))   '这里将字符串的前后空格去除
Next I
ReDim C(0 To UBound(D))    'C的下标应该与D的下标相同
For I = 0 To UBound(D)
    For J = 0 To UBound(B)
        If InStr(1, D(I), B(J), 1) > 0 Then
        C(I) = "存在"
        End If
    Next J
Next I
For I = 0 To UBound(D)
If C(I) = "存在" Then
Label1.Caption = Label1.Caption & D(I) & Space(3)
ElseIf C(I) = "" Then
Label2.Caption = Label2.Caption & D(I) & Space(3)
End If
Next I
End Sub

只有本站会员才能查看附件,请 登录


[此贴子已经被作者于2017-10-16 10:03编辑过]

#12
ZHRXJR2017-10-16 10:09
在第二页,误认为没有上传出去,多上传了一次,见笑了。

[此贴子已经被作者于2017-10-17 18:04编辑过]

#13
wlrjgzs2017-10-16 12:08
回复 8楼 ZHRXJR
#14
easonchou2017-10-26 23:39
只有本站会员才能查看附件,请 登录
前段时间比较忙,没有仔细调试就匆忙结贴了。今天发现还是老问题,只要后面那个字和数组里面后面的字相同,就被判断为存在了。如“有子8 橘子 系瓜”

[此贴子已经被作者于2017-10-26 23:42编辑过]

#15
easonchou2017-10-28 09:22
与D的下标相同
For I = 0 To UBound(D)
    For J = 0 To UBound(B)
        If InStr(1, D(I), B(J), 0) > 0 Then '比较方式改成二进制就好了
        C(I) = "存在"
        End If
    Next J
Next I
1