作者akk98 (akk)
看板java
標題[語法] replaceFirst()用法
時間Sun Jun 16 10:34:26 2019
這是拿括號的問題
請問下 在中間這邊的
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);
}
}
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 119.14.54.97 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/java/M.1560652469.A.472.html
1F:→ ssccg: 看不懂你這段程式是打算做什麼 06/16 14:48
2F:→ ssccg: 至於為什麼會出現exception,看exception是什麼不就知道了 06/16 14:52
3F:→ ssccg: replaceFirst的第一個參數是regex,在regex中{[(都是特殊符 06/16 14:55
4F:→ ssccg: 號,要單純比對字元要escape,例如replaceFirst("\\{",""); 06/16 14:56
5F:→ akk98: 大大你的意思是 這個方法只能用在正則表達嗎 06/16 22:06
6F:推 LPH66: 應該說 replaceFirst 只會把你的第一參數當正則式 06/17 12:42
7F:→ LPH66: 你要讓它找東西就要讓那個正則式表達你要找的東西 06/17 12:43