Java 识别';字符串的正则表达式#';
我有一个java问题。当遇到一个或多个“#”实例时,我不知道如何编写正则表达式将某些内容打印到文件中。当Java 识别';字符串的正则表达式#';,java,regex,Java,Regex,我有一个java问题。当遇到一个或多个“#”实例时,我不知道如何编写正则表达式将某些内容打印到文件中。当字符串等于”时不能打印,但当字符串等于“#”时必须打印。这是我的密码: int num=1; StringBuffer noletterbuf=新的StringBuffer(nospaces); noletterbuf.deleteCharAt(0); 字符串noletter=noletterbuf.toString(); //如果(num==noletter.split(“[^#]”).le
字符串等于
”时不能打印,但当字符串等于
“#”时必须打印。这是我的密码:
int num=1;
StringBuffer noletterbuf=新的StringBuffer(nospaces);
noletterbuf.deleteCharAt(0);
字符串noletter=noletterbuf.toString();
//如果(num==noletter.split(“[^#]”).length){//应用于C#和C
如果(num==noletter.split(“[#*]”).length){//应用于C
双yacc=倍频程*-50;
p6.println(“sb.append(\”/Times Roman findfont 70 scalefont setfont 1-1 scale newpath\”);sb.append(“+xaccplace+”+\“+”\”+“+”+“\”+”+“\”moveto\”);sb.append(\”(\)show 1-1 scale\”);
}
提前谢谢!
Bjorn既然放弃了生成的数组,为什么还要使用regex和
.split()
您可以使用以下命令检查字符串是否包含#
:
if (noletter.indexOf('#') >= 0) {
// ...
}
为什么要使用regex和
.split()
,因为您只需丢弃生成的数组
您可以使用以下命令检查字符串是否包含#
:
if (noletter.indexOf('#') >= 0) {
// ...
}
您的代码:
noletter.split("[#*]")
这将在每个#
和每个*
处拆分,因为星号在括号内。您的代码:
noletter.split("[#*]")
这将在每个
#
和每个*
处分开,因为星号在括号内。使用正则表达式检查的简单方法是:
if (str.matches(".*#.*")) // true if there's a # in str
我不理解“无空格”的相关性,也不理解为什么要使用StringBuffer,或者为什么要删除第一个字符。使用正则表达式检查的简单方法是:
if (str.matches(".*#.*")) // true if there's a # in str
我不明白“无空格”的相关性,也不明白为什么要使用StringBuffer,或者为什么要删除第一个字符。@CyrilleKarmann是的。但对于单字符检查,我总是使用
indexOf()
我相信它会更快。@Eric:contains
只会调用indexOf
。任何性能差异都应该是微不足道的/非瓶颈。@nhahtdh这可能是最小的影响,但是indexOf(char)
和indexOf(String)
不是同一种方法。(它们都有各自的实现。)我想这只是个人偏好。@CyrilleKarmann是的。但对于单字符检查,我总是使用indexOf()
,因为我认为它更快。@Eric:contains
只会调用indexOf
。任何性能差异都应该是微不足道的/非瓶颈。@nhahtdh这可能影响很小,但indexOf(char)
和indexOf(String)
不是同一种方法。(它们都有各自的实现。)我想这只是个人偏好。