0

在尝试处理 jsp 上的字符串时,我在代码中使用了 string.repalace() 方法,但我不断收到以下错误:

org.apache.jasper.JasperException: Unable to compile class for JSP: 

An error occurred at line: 9 in the jsp file: /final2.jsp
Cannot invoke replace(String, String) on the array type String[]
6:       public void main (String str) {
7:      String [] text = StringUtils.substringsBetween(str,"#","#");
8:      for (int i=0; i<text.length;i++) {
9:        String newtext = text.replace("#"+text[i]+"#","<b>"+text[i]+"</b>");
10:          }
11: //blank line
12:     }


Stacktrace:
org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:     102)
org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:331)
org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:469)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:378)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:353)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:340)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:646)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:357)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

我的代码如下:

<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*"      errorPage="" %>
<%@page import="org.apache.commons.lang.StringUtils" %>

<%
 final class setext {
  public void main (String str) {
    String [] text = StringUtils.substringsBetween(str,"#","#");
    for (int i=0; i<text.length;i++) {
      String newtext = text.replace("#"+text[i]+"#","<b>"+text[i]+"</b>");
     }

}

}
%>
4

3 回答 3

3
text.replace("#"+text[i]+"#","<b>"+text[i]+"</b>");

text 是数组,不能调用replace()数组

您需要首先从提供字符串的数组中获取字符串,然后对该字符串调用替换。

String temp = text[i];
temp.replace("#"+text[i]+"#","<b>"+text[i]+"</b>");
于 2012-07-18T11:24:01.483 回答
1

text是一个字符串数组 - 你可能的意思是:

String newtext = text[i].replace("#"+text[i]+"#","<b>"+text[i]+"</b>");

其中text[i]是文本数组中的字符串之一。

虽然看着它,这种说法确实有很大的意义。

于 2012-07-18T11:24:55.940 回答
0

如果只是根据需要替换“#”:

 public void main (String str) {
    String [] text = StringUtils.substringsBetween(str,"#","#");
    for (int i = 0, n = text.length ; i<n; i++) {
        text[i] = text[i].replace("#"+text[i]+"#", "<b>"+text[i]+"</b>");
 }

已编辑

  • 在 for(..) 中添加n
  • 如果您的代码片段受到压力,您还可以使用 Pattern/Matcher 模型来替换“#”。
于 2012-07-18T11:52:37.523 回答