VB6子字符串索引

6

我正在尝试在VB6中匹配电子邮件地址字符串中的域名,这不是我的日常语言。我基本上想从地址中提取域名(即admin@foo.com)进行比较。我想通过获取“@”后面的所有内容来提取它,并且我认为找到“@”的索引,然后使用Left$()将满足我的需求。如何获取索引?

2个回答

10
你可以使用 InStr 函数来完成这个任务:
例子:
s$ = "admin@foo.com"
d$ = Mid$(s$, InStr(1, s$, "@") + 1)
变量d$将以字符串"foo.com"结束。(不要忘记检查@符号是否存在,否则您将只得到整个源字符串。)

既然我需要检查 @,那么我将使用 InStr() 来确定它的位置,但是如果 "@" 不是地址字符串的子字符串,它会返回什么值呢? - Jeff LaFay
如果未找到该字符串,该函数将返回0。 - BP.
+1 请参阅VB6手册中关于Instr的主题 http://msdn.microsoft.com/zh-cn/library/aa445031(v=VS.60).aspx - MarkJ

0
我会在这里使用Split函数。
Dim strEmail, arr, strDomain
strEmail = "emailaddress@website.com"
arr = Split(strEmail, "@")
if arr.Count > 1 then
    strDomain = arr(1)
end if

希望这能有所帮助。
抱歉,忘记添加一个检查数组是否具有多个值的条件。

2
这些变量应该是强类型的,而不是默认为变体。更重要的是,数组没有Count属性。除此之外,这将是一个可行的解决方案。 - Bob77
另外还有几点需要注意:(1) Split 返回一个从零开始的数组,因此您需要使用 arr(0) 来访问第一个数组元素;(2) 用于替换无法工作的 arr.Count 的可用(虽然笨拙)方法是使用 UBound(arr)-LBound(arr)+1 - dmc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接