'   括号检查

'     括号共有四种:  1(英文圆括号),2(中文圆括号),3[方括号],4{花括号}

'      要左右匹配(可以嵌套)

Private Shared Function isBracketsOK(strInput As String) As Boolean

'  四种括号,左右各一个,共8个

Dim brace1_open As Char = "("

Dim brace1_close As Char = ")"

Dim brace2_open As Char = "("

Dim brace2_close As Char = ")"

Dim brace3_open As Char = "["

Dim brace3_close As Char = "]"

Dim brace4_open As Char = "{"

Dim brace4_close As Char = "}"

'  四个左括号的列表

Dim list_braceOpen As List(Of Char) = New List(Of Char)

list_braceOpen.Add(brace1_open)

list_braceOpen.Add(brace2_open)

list_braceOpen.Add(brace3_open)

list_braceOpen.Add(brace4_open)

'  四个右括号的列表

Dim list_braceClose As List(Of Char) = New List(Of Char)

list_braceClose.Add(brace1_close)

list_braceClose.Add(brace2_close)

list_braceClose.Add(brace3_close)

list_braceClose.Add(brace4_close)

'   左括号 和 右括号 的一一对应关系,用字典表示

Dim dic_braces As Dictionary(Of Char, Char) = New Dictionary(Of Char, Char)

dic_braces.Add(brace1_open, brace1_close)

dic_braces.Add(brace2_open, brace2_close)

dic_braces.Add(brace3_open, brace3_close)

dic_braces.Add(brace4_open, brace4_close)

'  右括号 组成的 堆栈(先进后出)

Dim stack_close As Stack(Of Char) = New Stack(Of Char)

Dim CharArr As Char() = strInput.ToCharArray()   '  将字符串转为 字符数组

For Each _char In CharArr    '  对于每个字符

If list_braceOpen.Contains(_char) Then   '   如果这是个 左括号

stack_close.Push(dic_braces(_char))                             '  在 堆栈中 加入相应的 右括号

ElseIf list_braceClose.Contains(_char) Then   ' 如果这是个  右括号

If stack_close.Count = 0 Then   '   如果 堆栈 已经空了(不能pop了)

Return False   '  报错

EndIf

Dim charPop AsChar = stack_close.Pop()   '  从 堆栈中取得一个右括号

If _char <> charPop Then     '  如果 从堆栈中取得的右括号 和 这个右括号 不同

Return False     '   报错

End If

End If

Next

If stack_close.Count > 0 Then   '  如果堆栈中还有 右括号

Return False

End  If

Return  True

End  Function

vb.net 对字符串中的括号匹配进行判断,容许嵌套的更多相关文章

  1. 华为OJ:2199 推断输入字符串中的括号匹配

    依据不同的括号有个计数器.在遍历时.当计数器小于0则返回false或者当遍历完后,计数器仍旧不为零,也返回false. import java.util.Scanner; public class b ...

  2. Excel-判断一个文本字符串中是否包含数字! 判断一个文本字符串是否是纯汉字!

    0.判断一个文本字符串中是否包含数字!/判断一个文本字符串是否是纯汉字! 公式=IF(LENB(A1)=2*LEN(A1),"都是汉字","含有非汉字字符") ...

  3. python栈--字符串反转,括号匹配

    栈的实现: # 定义一个栈类 class Stack(): # 栈的初始化 def __init__(self): self.items = [] # 判断栈是否为空,为空返回True def isE ...

  4. php使用正则表达式提取字符串中尖括号、小括号、中括号、大括号中的字符串

    $str="你好<我>(爱)[北京]{天安门}"; echo f1($str); //返回你好 echo f2($str); //返回我 echo f3($str); ...

  5. js正则实现从一段复杂html代码字符串中匹配并处理特定信息

    js正则实现从一段复杂html代码字符串中匹配并处理特定信息 问题: 现在要从一个复杂的html代码字符串(包含各种html标签,数字.中文等信息)中找到某一段特别的信息(被一对“|”包裹着),并对他 ...

  6. java:数据结构(二)栈的应用(括号匹配)

    一.什么是括号匹配: 括号匹配就是利用计算机辨别表达式里面的括号是否书写成功 例如: {()((a)) }这就是一个正确 (()()   这就是一个错误的 二.括号匹配的算法: 众所周知,括号分为花括 ...

  7. DP_括号匹配序列问题

    括号匹配问题 简单括号匹配问题是给出字符串,判断字符串中的括号是否匹配,此类问题核心解决方案就是利用栈的后进先出的特性,从左到右依次遍历字符串,遇左括号进栈,遇右括号将其与栈顶元素配对,若能配对,则栈 ...

  8. 华为笔试——C++括号匹配

    题目:括号匹配 题目来源:https://blog.csdn.net/lizi_stdio/article/details/76618908 题目介绍:输入一个字符串,里面可能包含“()”.“ [   ...

  9. JS中删除字符串中的空格

    问题描述:         在进行字符串操作时,由于字符串中存在较多的空格,因此需要考虑取消字符串中的空格 问题解决:       (1)删除字符串中的前导空格(字符串的前面的空格): 注意:这里使用 ...

随机推荐

  1. 管道的原子性 linux写操作原子性

    从本质上说,管道也是一种文件,但他又和一般的文件有所不同,管道可以克服使用文件进行通信的两个问题 限制管道的大小.实际上,管道是一个固定大小的缓冲区.在Linux中该换冲区的大小为一页,4k 使得他的 ...

  2. Debian kvm网络配置

    安装brctl apt-get install bridge-utils 设置网桥 可编辑 /etc/network/interface 文件.不过,我建议在 /etc/network/interfa ...

  3. Windows 10 更新补丁后Visual Studio 2017 运行项目出现错误

    问题: 今天更新了Windows 10(版本 1709)推送最新补丁后,打开Visual Studio 2017运行Web项目,都出现“指定的参数超出有效值的范围 参数名:site”,如下图: 解决方 ...

  4. 写一个TimeUI显示的函数,上代码

    public void FreshDateTime() { string strWeek = string.Empty; #region 格式化星期 switch (DateTime.Now.DayO ...

  5. 深入理解Session和Cookie的区别

    Cookie简介 Cookie意为“甜饼”,是由W3C组织提出,最早由Netscape社区发展的一种机制. 目前Cookie已经成为标准,所有的主流浏览器如IE.Netscape.Firefox.Op ...

  6. 在AWS中自定义Credential Provider实现Client连接

    今天在使用AWS中,由于原来的 key和secrect是放在配置文件ini里面的.现在需要改成从DB里面获取,所以需要自定义Credential.在AWS中重写这个挺简单的. 我这里是继承原先的Cre ...

  7. Go的流程控制

    流程控制 Go语言支持最基本的三种程序运行结构:顺序结构.选择结构.循环结构. 顺序结构:程序按顺序执行,不发生跳转. 选择结构:依据是否满足条件,有选择的执行相应功能. 循环结构:依据条件是否满足, ...

  8. codeforces #578(Div.2)

    codeforces #578(Div.2) A. Hotelier Amugae has a hotel consisting of 1010 rooms. The rooms are number ...

  9. 不懂APS系统?十个问答让你对APS瞬间明明白白

    本文为您解答APS自动排程系统导入中客户常见的问题,帮助您评估企业是否适合导入APS,并了解需要的人力和资金的投入. Q1:哪些企业需要导入APS? A1: 编制生产计划有困难的企业都可以开始考虑导入 ...

  10. XSS靶场练习

    0x00:前言 一个XSS练习平台,闯关形式,一共20关 0x01:开始 第一行都是代码插入点,下面几行是payloads(插入点和payloads中间空一行) LV1 <script>a ...