2013-03-03 185 views
0

我有一個java問題。我無法弄清楚如何編寫正則表達式來在遇到一個或多個'#'實例時將某些內容打印到文件中。當string equals「」不能打印時,但必須打印string equals「#」。這裏是我的代碼:正則表達式識別'#'字符串

int num = 1; 
StringBuffer noletterbuf = new StringBuffer(nospaces); 
noletterbuf.deleteCharAt(0); 
String noletter = noletterbuf.toString(); 
//if(num == noletter.split("[^#]").length){//applies # to C# and C 
if(num == noletter.split("[#*]").length){//applies # to C 
double yacc = octave*-50; 
p6.println("sb.append(\"/Times-Roman findfont 70 scalefont setfont 1 -1 scale newpath \"); sb.append(" + xaccplace + " + \" \" +" + yacc + " + \" moveto \"); sb.append(\"(#) show 1 -1 scale \");"); 
} 

在此先感謝! Bjorn

回答

4

爲什麼要使用正則表達式和.split(),因爲你只是放棄結果數組?

您可以檢查是否字符串包含#使用下列內容:

if (noletter.indexOf('#') >= 0) { 
    // ... 
} 
+3

或noletter.contains(「#」) – 2013-03-03 17:50:06

+0

@CyrilleKarmann Yup。但對於單字符檢查,我總是使用'indexOf()',因爲我相信它更快。 – Eric 2013-03-03 17:51:13

+0

謝謝。有用。 – user1189952 2013-03-03 17:51:25

0

您的代碼:

noletter.split("[#*]") 

這將分裂在每個#每個*,因爲星號是括號內。

0

檢查使用正則表達式的簡單方法是:

if (str.matches(".*#.*")) // true if there's a # in str 

我不明白「沒有空間」的相關性,或者爲什麼你使用一個StringBuffer,爲什麼你刪除的第一個字符。

相關問題