怎样用判断字符串中不含有下列字符之一?

来源:百度知道 编辑:UC知道 时间:2024/06/29 00:54:24
\/:*?"<>|
除了用instr一个个去试,有没有其它的办法?比如Format。
我想用来判断设定的文件名是否合法。
jyh_jack,用正则怎么用?二楼的那个不还是用的instr吗,我主要是觉得一个个去instr效率不高,印象中Format可以办到的,还有like语句什么的,大家帮忙解决下,解决了再加20分。

正则:
.net
要Imports System.Text.RegularExpressions

Dim re As New Regex("[\\/:*?<>|]")
If re.Ismatch("要判断的文件名") then
'不合法
else
'合法
end if

VB6需要引用Microsoft VBScript Regular Expressions 5.5
并且Regex可能要改成Regexp,没用过。

最好不要写死非法字符,不然在别的语种系统里会出错,可以用Path.GetInvalidFileNameChars方法来获取系统不允许的字符,它返回一个char()

还有个更暴力更简单的方法就是直接以这个字符串创建一个文件,然后捕获错误,如果成功就是文件名合法,如果出错就是含有非法字符,当然出错时还要判断一下文件是否存在,以及有无权限磁盘满盘不在盘不可写等等的问题。
其实先试着创建再捕获要比判断合法容易的多,也更实用。因为实际中即使文件名合法也可能会有各种其他错误出现,包括上面说的,不可能穷尽判断所有的可能,因此你总是要用一个错误捕获。凡是牵涉到IO必然要加错误捕获是常识了,不然一碰小错程序就崩溃退出了。

固定部分修改这句
Array("\", "/", ":", "*", "?", """", "<", ">", "|")

运行时动态添加验证数据可以用到可选参数
CheckStr("DBC", "AB+-*.")
好像这样的格式
==========================================
'通用验证函数
&