VB字符串处理函数一览

前端之家收集整理的这篇文章主要介绍了VB字符串处理函数一览前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

VB字符串处理函数一览


mid(字符串,从第几个开始,长度) ByRef在[字符串]中[从第几个开始]取出[长度个字符串]
例如mid("小欣无敌",1,3)则返回"小欣无"

instr(从第几个开始,字符串1,字符串2) ByVal从规定的位置开始查找,返回字符串2在字符串1中的位置
例如instr(1,"小欣无敌","小")则返回1,instr(2,"小"),则返回0。0表示未找到

InStrRev(字符串1,字符串2,从第几个开始) ByVal从规定的位置开始,从后住前查找,返回字符串2在字符串1中的位置,此处注意,虽是从后住前查找,但是返回的值还是从前往后算的。
例如instrRev("小欣无敌","小",2)则返回2 ; instrRev("小欣无敌","欣",1)则返回0,因为它从"小欣无敌"的第1个字开始往前查找,所以找不到。0表示未找到

left(字符串,长度) ByVal从[字符串]的左边开始返回[长度]个字符
例如Left("小欣无敌,3)则返回"小欣无"

right(字符串,长度) ByVal从[字符串]的右边开始返回[长度]个字符
例如Right("小欣无敌",3)则返回"欣无敌"

ucase(字符串) ByVal返回[字符串]的大写形式,只对英文字符有效
例如ucase("xiaoXINwuDi")则返回"XIAOXINWUDI"



lcase(字符串) ByVal返回[字符串]的小写形式,只对英文字符有效
例如lcase("xiaoXINwuDi")则返回"xiaoxinwudi"

asc(字符) Byval返回[字符]的ascii编码,若有多个字符,则只返回首字符的ascii编码,和Chr()函数是一个可逆的过程
例如asc("小")则返回-12127 ; asc("小欣无敌")也返回-12127

chr(ASCii编码) Byval返回[Ascii]编码所代表的字符,和Chr()函数是一个可逆的过程
例如chr(-12127)则返回"小";chr(asc("小"))则返回"小"(这里是为了说明asc和chr的可逆性,例用此特性可以加密文本)

trim(字符串) Byval返回去掉了前、后之后的[字符串]
例如trim(" 小欣 无敌 ")则返回"小欣 无敌",中间的空格不受任何影响

string(个数,字符) Byval返回[个数]个[字符]
例如string(3,"小")则返回"小小小",而string(3,"小欣无敌")也返回"小",只有首字符才有效

space(个数) Byval返回[个数]个空格
例如space(5)则返回" "

strconv(字符串,转换的类型) Byval将字符串转成指定的类型。常用的类型只有两个,vbwide半角转成全角,vbNarrow全角转成半角
例如strconv("xiao",vbwide)则返回"XIAO",而strconv("XIAO",vbnarrow)则返回"XIAO"
’备注vbwide = 4,vbnarrow = 8

len(字符串) Byval返回[字符串]的长度
例如len("小欣无敌")则返回4

字节操作函数
midb()
leftb()
rightb()
chrb()
lenb()

UNICODE的ASC码处理
chrw()
ascw()

去空格
ltrim
rtirm

拆分合并
split()
join()

翻转
srereverse()

替换
replace()
AscB(String As String) As Byte
返回字符串中第一个字节的值
例如:AscB("坦然")则返回102

AscW(String As String) As Integer
返回字符串中第一个字符的本机字符代码(Unicode或ANSI)
例如:AscW("坦然")则返回22374

ChrW(CharCode As Long)
返回一个包含指定本机字符的字符串(Unicode或ANSI)
例如:ChrW(22374)则返回"坦"

Filter(InputStrings,Value[,Include[,Compare]])
返回一个下标从零开始的数组,该数组包含基于指定筛选条件的一个字符串数组的子集。
InputStrings必需的。要执行搜索的一维字符串数组。
Value必需的。要搜索的字符串。
Include可选的。Boolean值,表示返回子串包含还是不包含Value字符串。如果Include是True,Filter返回的是包含Value子字符串的数组子集。如果Include是False,Filter返回的是不包含Value子字符串的数组子集。
Compare可选的。数字值,表示所使用的字符串比较类型。有关其设置,请参阅下面的“设置值”部分。
Compare参数的设置值如下:
vbUseCompareOption –1使用Option Compare语句的设置值来执行比较。
vbBinaryCompare 0执行二进制比较。
vbTextCompare 1执行文字比较。
vbDatabaseCompare 2只用于Microsoft Access。基于您的数据库信息来执行比较。
例如:
Dim a(3) As String
a(0) = "坦"
a(1) = "坦然"
a(2) = "坦然面"
a(3) = "坦然面对"
b = Filter(a,"然")
则b(0) = "坦然"
b(1) = "坦然面"
b(2) = "坦然面对"

Join(list[,delimiter]) As String
返回一个字符串,该字符串是通过连接某个数组中的多个子字符串而创建的。
list必需的。包含被连接子字符串的一维数组。
delimiter可选的。在返回字符串中用于分隔子字符串的字符。如果忽略该项,则使用空格(" ")来分隔子字符串。如果delimiter是零长度字符串(""),则列表中的所有项目都连接在一起,中间没有分隔符。
例如:
Dim a(3) As String
a(0) = "坦"
a(1) = "坦然"
a(2) = "坦然面"
a(3) = "坦然面对"
b = Join(a,"+")
则b = "坦+坦然+坦然面+坦然面对"

LeftB(String,Length As Long)
从一个字符串的左边起返回指定数目的字节
例如:
a = LeftB("坦然面对",4)
则a = "坦然"

LenB(Expression)
返回存储一个变量所需的字节数
例如:a = LenB("坦然面对")
则a = 8

LTrim(String)
返回无前导空格的字符串的备份
RTrim(String)
返回一个无后缀空格的字符串的备份
例如:
a = LTrim("坦然面对")
b = RTrim("坦然面对")
则a = "坦然面对"
b = "坦然面对"

MidB(String,Start As Long,[Length])
从一个字符串中返回指定数目的字节
例如:
a = MidB("坦然面对",3,4)
则a = "然面"

MonthName(Month As Long,[Abbreviate As Boolean = False]) As String
返回一个表示指定月份的字符串。
abbreviate可选的。Boolean值,表示月份名是否缩写。如果忽略,缺省值为False,表明月份名不能被缩写。
例如:
a = MonthName(5)
则a = "五月"

Format(expression[,format[,firstdayofweek[,firstweekofyear]]])
返回Variant (String),其中含有一个表达式,它是根据格式表达式中的指令来格式化的。
expression必要参数。任何有效的表达式。
format可选参数。有效的命名表达式或用户自定义格式表达式。
firstdayofweek可选参数。常数,表示一星期的第一天。
firstweekofyear可选参数。常数,表示一年的第一周。
firstdayofweek参数有下面设置:
vbUseSystem 0使用NLS API设置。
VbSunday 1星期日(缺省)
vbMonday 2星期一
vbTuesday 3星期二
vbWednesday 4星期三
vbThursday 5星期四
vbFriday 6星期五
vbSaturday 7星期六
firstweekofyear参数有下面设置:
vbUseSystem 0使用NLS API设置。
vbFirstJan1 1从包含一月一日的那一周开始(缺省)。
vbFirstFourDays 2从本年第一周开始,而此周至少有四天在本年中。
VbFirstFullWeek 3从本年第一周开始,而此周完全在本年中。

示例
a = Format(#4/19/2008 1:01:05 PM#,"yyyy-mm-dd,ddd,hh:mm:ss")
a = "2008-04-19,Sat,13:01:05"
a = Format(#4/19/2008 1:01:05 PM#,dddd,h:m:s")
a = "2008-04-19,Saturday,13:1:5"
a = Format(#4/19/2008 1:01:05 PM#,"m-d-yy ampm h/m/s")
a = "4-19-08 PM 1-1-5"
a = Format(1234567.89,"#,#.#00")
a = "1,234,567.890"
a = Format(0.12358,"#%")
a = "12%"
a = Format(0.12358,"#.#0%")
a = "12.36%"
a = Format(0.12358,"#.#000%")
a = "12.3580%"
a = Format("TaNrAnMiAnDuI",">")
a = "TANRANMIANDUI"
a = Format("TaNrAnMiAnDuI",">")
a = "tanranmiandui"
总之,Format功能很强大,可替代许多函数

FormatCurrency(Expression[,NumDigitsAfterDecimal [,IncludeLeadingDigit [,UseParensForNegativeNumbers [,GroupDigits]]]])
返回一个货币值格式的表达式,它使用系统控制面板中定义的货币符号。
Expression必需的。要格式化的表达式。
NumDigitsAfterDecimal可选的。数字值,表示小数点右边的显示位数。缺省值为–1,表示使用计算机的区域设置值。
IncludeLeadingDigit可选的。三态常数,表示小数点前是否显示一个零。
UseParensForNegativeNumbers可选的。三态常数,表示是否把负数值放在园括号内。
GroupDigits可选的。三态常数,表示是否用组分隔符对数字进行分组,组分隔符由计算机的区域设置值指定。
IncludeLeadingDigit、UseParensForNegativeNumbers和GroupDigits参数的设置值如下:
TristateTrue –1 True
TristateFalse 0 False
TristateUseDefault –2使用计算机区域设置中的设置值。
示例
a = FormatCurrency(1234567.89)
a =¥1,567.89
a = FormatCurrency(1234567.89,0)
a =¥1,568
a = FormatCurrency(1234567.89,3)
a =¥1,567.890
a = FormatCurrency(0.15,vbFalse)
a =¥.15
a = FormatCurre

FormatDateTime(Date[,NamedFormat])
返回一个日期或时间格式的表达式。
Date必需的。要被格式化的日期表达式。
NamedFormat可选的。数字值,表示日期/时间所使用的格式。如果忽略该值,则使用vbGeneralDate。
NamedFormat参数的设置值如下:
vbGeneralDate 0显示日期和/或时间。如果有日期部分,则用短日期格式显示。如果有时间部分,则用长时间格式显示。如果都有,两部分都显示
vbLongDate 1用计算机区域设置值中指定的长日期格式显示日期。
vbShortDate 2用计算机区域设置值中指定的短日期格式显示日期。
vbLongTime 3用计算机区域设置值中指定的时间格式显示时间。
vbShortTime 4用24小时格式(hh:mm)显示时间。

示例
a = FormatDateTime(#4/19/2008 2:54:23 PM#,vbGeneralDate)
a = 2008-4-19 14:54:23
a = FormatDateTime(#4/19/2008 2:54:23 PM#,vbLongDate)
a = 2008年4月19日星期六
a = FormatDateTime(#4/19/2008 2:54:23 PM#,vbShortDate)
a = 2008-4-19
a = FormatDateTime(#4/19/2008 2:54:23 PM#,vbLongTime)
a = 14:54:23
a = FormatDateTime(#4/19/2008 2:54:23 PM#,vbShortTime)
a = 14:54


FormatNumber(Expression[,GroupDigits]]]])
返回一个数字格式的表达式。
Expression必需的。要被格式化的表达式。
NumDigitsAfterDecimal可选的。数字值,表示小数点右边的显示位数。缺省值为–1,表示使用计算机的区域设置值。
IncludeLeadingDigit可选的。三态常数,表示小数点前是否显示零。
UseParensForNegativeNumbers可选的。三态常数,表示是否把负数值放在圆括号内。
GroupDigits可选的。的三态常数,表示是否用组分隔符对数字分组,组分隔符在计算机的区域设置值中指定。
IncludeLeadingDigit、UseParensForNegativeNumbers和GroupDigits参数的设置值如下:
TristateTrue –1 True
TristateFalse 0 False
TristateUseDefault –2用计算机区域设置值中的设置值。

示例
a = FormatNumber(-1234567.89,4,vbTrue,vbTrue)
a = (1,567.8900)
a = FormatNumber(-1234567.89,vbFalse,vbFalse)
a = -1234567.8900


FormatPercent(Expression[,GroupDigits]]]])
返回一个百分比格式(乘以100)的表达式,后面有%符号。
Expression必需的。要格式化的表达式。
NumDigitsAfterDecimal可选的。表示小数点右边的显示位数。缺省值为–1,表示使用计算机的区域设置值。
IncludeLeadingDigit可选的。三态常数,表示小数点前是否显示零。
UseParensForNegativeNumbers可选的。三态常数,表示是否把负数放在圆括号内。
GroupDigits可选的。三态常数,表示是否用组分隔符对数字进行分组,组分隔符在计算机的区域设置值中指定。
IncludeLeadingDigit、UseParensForNegativeNumbers和GroupDigits参数的设置值如下:
TristateTrue –1 True
TristateFalse 0 False
TristateUseDefault –2使用计算机区域设置值中的设置值。

示例
a = FormatPercent(-1234567.89,vbFalse)
a = -123456789.0000%
a = FormatPercent(-1234567.89,vbTrue)
a = (123,456,789.0000%)

Replace(expression,find,replacewith[,start[,count[,compare]]])
返回一个字符串,该字符串中指定的子字符串已被替换成另一子字符串,并且替换发生的次数也是指定的。
expression必需的。字符串表达式,包含要替换的子字符串。
find必需的。要搜索到的子字符串。
replacewith必需的。用来替换的子字符串。
start可选的。在表达式中子字符串搜索的开始位置。如果忽略,假定从1开始。
count可选的。子字符串进行替换的次数。如果忽略,缺省值是–1,它表明进行所有可能的替换。
compare可选的。数字值,表示判别子字符串时所用的比较方式。
compare参数的设置值如下:
vbUseCompareOption –1使用Option Compare语句的设置值来执行比较。
vbBinaryCompare 0执行二进制比较。
vbTextCompare 1执行文字比较。
vbDatabaseCompare 2仅用于Microsoft Access。基于您的数据库的信息执行比较。

示例
a = Replace("坦坦然坦然面坦然面对","然","对")
a = "坦坦对坦对面坦对面对"
a = Replace("坦坦然坦然面坦然面对","对",5)
a = "对面坦对面对"
a = Replace("坦坦然坦然面坦然面对",2)
a = "坦坦对坦对面坦然面对"


RightB(String,Length As Long)
从字符串的右边起返回指定数目的字节
示例
a = RightB("坦然面对",4)
a = "面对"


Split(expression[,delimiter[,compare]]])
返回一个下标从零开始的一维数组,它包含指定数目的子字符串。
expression必需的。包含子字符串和分隔符的字符串表达式。如果expression是一个长度为零的字符串(""),Split则返回一个空数组,即没有元素和数据的数组。
delimiter可选的。用于标识子字符串边界的字符串字符。如果忽略,则使用空格字符(" ")作为分隔符。如果delimiter是一个长度为零的字符串,则返回的数组仅包含一个元素,即完整的expression字符串。
count可选的。要返回的子字符串数,–1表示返回所有的子字符串。
compare可选的。数字值,表示判别子字符串时使用的比较方式。
compare参数的设置值如下:
vbUseCompareOption –1用Option Compare语句中的设置值执行比较。
vbBinaryCompare 0执行二进制比较。
vbTextCompare 1执行文字比较。
vbDatabaseCompare 2仅用于Microsoft Access。基于您的数据库的信息执行比较。

示例
a = Split("坦坦然坦然面坦然面对")
a(0) = "坦" ; a(1) = "坦然" ; a(2) = "坦然面" ; a(3) = "坦然面对"
a = Split("坦!坦然!坦然面!坦然面对","!")
结果同上。
a = Split("坦!坦然!坦然面!坦然面对","!",2)
a(0) = "坦" ; a(1) = "坦然!坦然面!坦然面对"

StrComp(string1,string2[,compare])
返回Variant (Integer),为字符串比较的结果。
string1必要参数。任何有效的字符串表达式。
string2必要参数。任何有效的字符串表达式。
Compare可选参数。指定字符串比较的类型。如果compare参数是Null,将发生错误。如果省略compare,Option Compare的设置将决定比较的类型。
compare参数设置为:
vbUseCompareOption -1使用Option Compare语句设置执行一个比较。
vbBinaryCompare 0执行一个二进制比较。
vbTextCompare 1执行一个按照原文的比较。
vbDatabaseCompare 2仅适用于Microsoft Access,执行一个基于数据库信息的比较。
StrComp函数有下列返回值:
string1小于string2 -1
string1等于string2 0
string1大于string2 1
string1或string 2为Null Null

示例
a = StrComp("坦","然")
a = -1
a = StrComp("面","然")
a = 1
a = StrComp("然","然")
a = 0
a = StrComp("然",Null)
a = Null

StrConv(string,conversion,LCID)
返回按指定类型转换的Variant (String)。
string必要参数。要转换的字符串表达式。
conversion必要参数。Integer。其值的和决定转换的类型。
LCID可选的。如果与系统LocaleID不同,则为LocaleID(系统LocaleID为缺省值。)
conversion参数的设置值为:
vbUpperCase 1将字符串文字转成大写。
vbLowerCase 2将字符串文字转成小写。
vbProperCase 3将字符串中每个字的开头字母转成大写。
vbWide 4将字符串中单字节字符转成双字节字符。
vbNarrow 8将字符串中双字节字符转成单字节字符。
vbKatakana 16将字符串中平假名字符转成片假名字符。
vbHiragana 32将字符串中片假名字符转成平假名字符。
vbUnicode 64根据系统的缺省码页将字符串转成Unicode。
vbFromUnicode 128将字符串由Unicode转成系统的缺省码页。


示例
a = StrConv("how do you do",vbUpperCase)
a = "HOW DO YOU DO"
a = StrConv("HOW DO YOU DO",vbLowerCase)
a = "how do you do"
a = StrConv("how do you do",vbProperCase)
a = "How Do You Do"
vbWide vbNarrow见原文
a = StrConv("坦然面对",vbUnicode)
a = "fW6qb楖["
a = StrConv("fW6qb楖[",vbFromUnicode)
a = "坦然面对"

StrReverse(string1)
返回一个字符串,其中一个指定子字符串的字符顺序是反向的。
示例
a = StrReverse("坦然面对")
a = "对面然坦"

WeekdayName(weekday,abbreviate,firstdayofweek)
返回一个字符串,表示一星期中的某天。
weekday必需的。数字值,表示一星期中的某天。该数字值要依赖于firstdayofweek设置中的设置值来决定。
abbreviate可选的。Boolean值,表示星期的名称是否被缩写。如果忽略该值,缺省值为False,表明星期的名称不能被缩写。
firstdayofweek可选的。数字值,表示一星期中第一天。
firstdayofweek参数值如下:
vbUseSystem 0使用本国语言支持(NLS) API设置值。
vbSunday 1星期日(缺省)。
vbMonday 2星期一
vbTuesday 3星期二
vbWednesday 4星期三
vbThursday 5星期四
vbFriday 6星期五
vbSaturday 7星期六
示例
a = WeekdayName(5)
a = "星期四"

下面一堆东西可以解决长度问题~~~

---------------------------------------------------

VB4.0以后,string类型以UNICODE存放,以ANSI形式写入文件。所以,len和FileLen结果不同。len返回字数,每个中、英文均为1;lenb返回字节数,每个中、英文均为2。

如果需要返回ANSI的字节数,可用如下函数
Public Function LenANSI(strU as string) as long
LenANSI = LenB(StrConv(strU,vbFromUnicode))
End function
--------------------------------------------------
在32-bit版本的VB底下,将每一个字符都视为两个Byte,所以
Len("中英Mixed")等于7
LenB("中英Mixed")等于14
但是在很多场合底下,我们希望中文字长度以2计算,英文字母长度以1计算,此时使用的方法如下:
'欲计算字串S的长度
N = 0
For I = 1 To Len(S)
C = Asc(Mid(S,I,1)) '取得第I个字符组的字符码
If C >= 0 And C <128 Then '英文
N = N + 1
Else '中文
N = N + 2
End If
Next
看起来程序有点罗唆,如果您不喜欢这个方法,可以使用Windows API的lstrlen函数,假设假计算S的长度,则API声明式如下:
Private Declare Function lstrlen Lib "kernel32" Alias "lstrlenA" (ByVal lpString As String) As Long
调用的叙述则是:
n = lstrlen("中英Mixed" + Chr(0))
Print n ' n将等于9
请注意调用lstrlen时必须加上Chr(0),因为此一函数是根据Chr(0)来判断字串的结束。
调用lstrlen除了程序比较简短之外,速度也比我们写VB程序判断中英文字然后计算长度来的快。

1.Private Declare Function lstrlen Lib "kernel32" Alias "lstrlenA" (ByVal lpString As String) As Long

2.Private Sub Command1_Click()

3.MsgBox lstrlen("100个苹果" + Chr(0))

4.End Sub

复制代码



---------------------------------------------------


有个算中英文混合长度的玩意~~

1.Private Function prvStringLenth(strString As String) As Long

2.Dim lngI As Long

3.Dim lngLenth As Long

4.

5.prvStringLenth = 0

6.lngLenth = 0

7.

8.If Len(Trim(strString)) > 0 Then

9.For lngI = 1 To Len(Trim(strString))

10.If Asc(Mid(Trim(strString),lngI,1)) < 0 Then

11.lngLenth = lngLenth + 2 '如果asc码小于0则为汉字

12.Else

13.lngLenth = lngLenth + 1 '大于0则为英文

14.End If

15.Next

16.prvStringLenth = lngLenth

17.End If

18.

19.End Function

复制代码

原文链接:https://www.f2er.com/vb/256350.html

猜你在找的VB相关文章