我有一个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 \");");
}
提前致谢! 比约
答案 0 :(得分:4)
为什么要使用正则表达式和.split()
,因为你只是放弃了生成的数组?
您可以使用以下内容检查字符串是否包含#
:
if (noletter.indexOf('#') >= 0) {
// ...
}
答案 1 :(得分:0)
您的代码:
noletter.split("[#*]")
这将在每个#
和每个*
分开,因为星号在括号内。
答案 2 :(得分:0)
使用正则表达式检查的简单方法是:
if (str.matches(".*#.*")) // true if there's a # in str
我不明白“无空格”的相关性,或者为什么使用StringBuffer,或者为什么删除了第一个字符。