[语法] replaceFirst()用法

楼主: akk98 (akk)   2019-06-16 10:34:26
这是拿括号的问题
请问下 在中间这边的
st2=st1;
while(st1.length()!=0) {
for(int i=0;i<st2.length();i++) {
if(st.substring(i,i+1).equals("{")) {
st1=st.replaceFirst("}","");
st1=st1.replaceFirst("{","");
//遇到{ 就拿掉} 跟拿掉{
最后的st1=st1.replaceFirst("{",""); 出现exception
不知道有没有大大可以指点一下 为什么不行 我不想用stack
以下完整的码
package test;
import java.util.HashMap;
import java.util.Scanner;
import java.util.Stack;
public class Coco {
public static void main(String[] args) {
// Scanner sc = new Scanner(System.in);
// System.out.println("请输入{([");
// String st =sc.nextLine();
String st = "{{{{{DDDVV}}))(())]][[[";
String st1="";
String st2="";
for(int i=0;i<st.length();i++) {
if(st.substring(i,i+1).equals("{")||st.substring(i,i+1).equals("[")||st.substring(i,i+1).equals("(")||st.substring(i,i+1).equals("}")||st.substring(i,i+1).equals("]")||st.substring(i,i+1).equals(")"))
{
st1=st1.concat(st.substring(i,i+1));
}
}
//将st 没括号的拿掉
st2=st1;
while(st1.length()!=0) {
for(int i=0;i<st2.length();i++) {
if(st.substring(i,i+1).equals("{")) {
st1=st.replaceFirst("}","");
st1=st1.replaceFirst("{","");
//遇到{ 就拿掉} 跟拿掉{
}else if(st.substring(i,i+1).equals("[")) {
st1=st.replaceFirst("]","");
st1=st1.replaceFirst("["," ");
}else if(st.substring(i,i+1).equals("(")) {
st1=st.replaceFirst(")","");
st1=st1.replaceFirst("(","");
}
}
for(int i=0;i<st1.length();i++) {
if(!(st.substring(i,i+1).equals("{")||st.substring(i,i+1).equals("[")||st.substring(i,i+1).equals("(")||st.substring(i,i+1).equals("}")||st.substring(i,i+1).equals("]")||st.substring(i,i+1).equals(")")))
{
System.out.println(false);
break;
}
}
if(st1.length()==0) {
System.out.println(true);
break;
}
}
System.out.println(st1);
}
}
作者: ssccg (23)   2019-06-16 14:48:00
看不懂你这段程式是打算做什么至于为什么会出现exception,看exception是什么不就知道了replaceFirst的第一个参数是regex,在regex中{[(都是特殊符号,要单纯比对字符要escape,例如replaceFirst("\\{","");
楼主: akk98 (akk)   2019-06-16 22:06:00
大大你的意思是 这个方法只能用在正则表达吗
作者: LPH66 (-6.2598534e+18f)   2019-06-17 12:42:00
应该说 replaceFirst 只会把你的第一参数当正则式你要让它找东西就要让那个正则式表达你要找的东西

Links booklink

Contact Us: admin [ a t ] ucptt.com