0

ジャバの質問があります。「#」の 1 つ以上のインスタンスに遭遇したときに何かをファイルに出力するための正規表現の書き方がわかりません。""の場合は印刷してはいけませんが、 "#"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 \");");
}

前もって感謝します!ビョルン

4

3 に答える 3

4

.split()結果の配列を破棄するだけなので、なぜ正規表現を使用するのですか?

#次を使用して、文字列に含まれているかどうかを確認できます。

if (noletter.indexOf('#') >= 0) {
    // ...
}
于 2013-03-03T17:48:29.060 に答える
0

正規表現を使用して確認する簡単な方法は次のとおりです。

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

「スペースなし」の関連性、または StringBuffer を使用した理由、または最初の文字を削除した理由がわかりません。

于 2013-07-25T21:22:59.827 に答える
0

あなたのコード:

noletter.split("[#*]")

アスタリスクが括弧内にあるため、これは each #and eachで分割されます。*

于 2013-03-03T17:50:56.353 に答える