字符串处理之获取所有不在括号中的字符

email: gmail4linus at gmail dot com

字符串处理问题

有一个表达式,其中包含不确定数目的括号,如as(sdfsd + sdfs)sdf(sdf-sdf(sdf + sdf))sdf。要求获取所有不在括号中的字符。

实现思想:用栈来实现,遍历字符串,如果遇到左括号(()则向栈中压入(push)一个元素(任意元素),如果遇到右括号())则从栈顶弹出(pop)一个元素,如果遇到非括号(左括号或者右括号)则检测栈中是否为空,若为空则该字符在所有括号之外。

Java代码可以如下这么写(说明:作者Java水平比较差,希望不会误导大家)

package com.sgy.test;

import java.util.Stack;

public class TestString {
     public static void main(String[] args){
    	 String s="ab(cd(agbc)ff)agg(eh)";
    	 Stack<Character> stack = new Stack<Character>();
    	 StringBuffer result = new StringBuffer();
    	 for(int i=0;i<s.length();i++){
    		 char c = s.charAt(i);
    		 if(‘(‘ == c){
    			 stack.push(c);
    		 }else if(‘)‘ == c){
    			 stack.pop();
    		 }else if(stack.isEmpty()){
    			 result.append(c);
    		 }
    	 }
    	 System.out.println(result);
     }
}

字符串处理之获取所有不在括号中的字符

时间: 2024-10-22 19:06:51

字符串处理之获取所有不在括号中的字符的相关文章

shell中如何取括号中的字符

1. 使用grep(结果带括号,不知道有没有办法仅把括号中的内容匹配出来) $a='abc[edg]adfirpqu' $echo $a|grep -o '\[.*\]' #中括号的处理需要转义 [edg] $b='abc(edg)adfirpqu' $echo $b|grep -o '(.*)' (edg) 2. 使用cut $a='abc[edg]adfirpqu' $echo $a|cut -d '[' -f2|cut -d ']' -f1 edg $b='abc(edg)adfirpqu

正则表达式匹配括号中的字符,不包括括号

(?<=\()\S+(?=\)) (?<=exp)是以exp开头的字符串, 但不包含本身.(?=exp)就匹配惟exp结尾的字符串, 但不包含本身. (?<=\()    也就是以括号开头, 但不包含括号. (?=\)) 就是以括号结尾 \S 匹配任何非空白字符.等价于[^ \f\n\r\t\v].+表示至少有一个字符. (?<=\()\S+(?=\))  就是匹配以 (开头, )结尾的括号里面最少有一个非空白字符的串, 但不包括开头的(和结尾的)

字符串函数:获取个数,替换,除空格

--字符串函数--LEN():获取指定参数的字符个数select LEN('中华人民共和国')--CHARINDEX(所需要查询的字符串,源字符串,查询起始位置)-IndexOf().能够找到就返回从1开始的索引,如果不能找到就返回0select CHARINDEX('人民','中华人民共和国')select CHARINDEX('人 民','中华人民共和国')select CHARINDEX('人民','中华人民共和国',2)--UPPER ToUpper() LOWER()--ToLower

常用数组、字符串方法总结&amp;获取元素、DOM操作

字符串的方法.返回值.是否改变原字符串:1 charAt() 方法可返回指定位置的字符. 不改变原始字符串 JavaScript并没有一种有别于字符串类型的字符数据类型,返回的字符是长度为 1 的字符串: 注释:字符串中第一个字符的下标是 0.如果参数 index 不在 0 与 string.length 之间,该方法将返回一个空字符串. 2 concat() 方法用于连接两个或多个字符串并返回连接后的字符串 不改变原始字符串 语法:stringObject.concat(stringX,str

shell 字符串中定位字符位置 获取字符位置

linux shell 字符串操作(长度,查找,替换)详解 该博文中描述的如下两个字符串操作, 1 ${string:position} #在$string中, 从位置$position开始提取子串 2 ${string:position:length} #在$string中, 从位置$position开始提取长度为$length的子串 需要用到字符/子串在父字符串中的位置(position);而shell字符串并未提供获取子串所在位置的接口,如果基于字符串变量的操作,则无法预知子串的位置: P

字符串保存和获取

有时候,需要在手机里储存一些东西,比如说在APP使用的时候保存账号和密码什么的 需要写几个实例方法 在.h文件中写上方法名 + (void) saveCenterProValue:(NSString*)valueStr key:(NSString *)keyStr; + (id)getCenterPro:(NSString*)identifier; 在.m文件中加上实现方法 ps:写在单例中更好 + (void) saveCenterProValue:(NSString*)valueStr ke

[Swift]字符串根据索引获取指定字符,依据ASCII编码实现字符和整数的快速转换

ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言. 它是现今最通用的单字节编码系统,并等同于国际标准ISO/IEC 646. 请注意,ASCII是American Standard Code for Information Interchange缩写,而不是ASCⅡ(罗马数字2),有很多人在这个地方产生误解. 在Swift中实现:字符串根据索

字符串中单个字符的用法

我们使用字符串时经常要对字符串中单个字符进行处理,比如检测一个string对象是否包含空白,或者把string对象中的字母大写改为小写,查看某个特定字符是否出现,判断字符串是否为数字等等. 这类处理的关键是要获取字符本身.有时需要处理string对象中的每一个字符,另外一些时候则只需处理某个特定的字符,还有些时候遇到某个条件处理就要停下来. 在cctype头文件中定义了一组标准库函数处理字符串的工作. cctype头文件中的函数 isalnum(c)    当c是字母或数字时为真 isalpha

vim 正则表达式获取双引号中的字符

vim 正则表达式获取双引号中的字符 1.获取双引号中的字符 [html] view plain copy :%s/.*\".?\".*/\1/ 2.用字符串建立标签 如 hello  <hello></hello> [html] view plain copy :%s/[a?z,A?Z]?/<\1><\/\1>/