`

java中string的replace方法解析

阅读更多
今天在写代码时犯了一个挺低级的错误,所以记录在此,以免以后再犯。
代码其实很简单,就是用string的replace方法,如下:
	public void doFilter() {
		// TODO Auto-generated method stub
         String mes = "This is a < script >";
         mes.replace('<', '[').replace('>', ']');
         //mes += "---HtmlFilter----";
         System.out.println(mes);
         	}

但打印输入的一直是This is a < script >,开始还以为是replace方法没有起作用。在看了replace方法的源码以后才恍然大悟,源码如下:
 public String replace(char oldChar, char newChar) {
	if (oldChar != newChar) {
	    int len = count;
	    int i = -1;
	    char[] val = value; /* avoid getfield opcode */
	    int off = offset;   /* avoid getfield opcode */

	    while (++i < len) {
		if (val[off + i] == oldChar) {
		    break;
		}
	    }
	    if (i < len) {
		char buf[] = new char[len];
		for (int j = 0 ; j < i ; j++) {
		    buf[j] = val[off+j];
		}
		while (i < len) {
		    char c = val[off + i];
		    buf[i] = (c == oldChar) ? newChar : c;
		    i++;
		}
		return new String(0, len, buf);
	    }
	}
	return this;
    }

从源码我们可以看到,replace方法中,如果替换字符后,它是返回一个重新new的string对象,原来的字符串是没有变的。所以用replace方法时一定要有一个string的变量接受替换的结果。所以最初的方法应该做如下改动:
	public void doFilter() {
		// TODO Auto-generated method stub
         String mes = "This is a < script >";
         String temp = mes.replace('<', '[').replace('>', ']');
         //mes += "---HtmlFilter----";
         System.out.println(temp );
         	}

这样输出如愿的字符串了。
分享到:
评论

相关推荐

    java中的String类常用方法解析(一)

    本文将深入解析`String`类的一些常用方法,帮助开发者更好地理解和使用这个核心类。 1. **构造方法** - `String()`:创建一个空字符串。 - `String(char[] value)`:根据字符数组创建字符串。 - `String(String ...

    Java字符串替换函数replace()用法解析

    在Java编程语言中,`String`类提供了多种方法来处理字符串,其中之一便是`replace()`方法。这个方法主要用于在字符串中替换指定的字符或子串,返回一个新的字符串,原字符串不会被改变,因为Java中的字符串是不可变...

    java的String[] split 示例

    在Java编程语言中,`String`类提供了许多用于操作字符串的方法,其中之一便是`split`方法。这个方法在处理文本数据时极为有用,特别是在需要根据特定的分隔符将字符串分割成多个子串的情况下。下面,我们将深入探讨`...

    char,string全部函数方法说明

    总之,`char`和`String`在Java中扮演着重要角色,它们提供的丰富函数方法使得处理文本数据变得简单高效。理解和熟练使用这些方法是Java编程的基本功,对于开发涉及文本处理的应用尤其关键。通过深入学习和实践,...

    有关Java String常用方法的总结.docx

    ### 有关Java String常用方法的总结 #### 一、String 类概述 `String`类是Java中最基础也是最重要的数据类型之一,在Java中被定义为一个不可变类(immutable class),这意味着一旦一个`String`对象创建之后,其...

    java实现HTML解析图片批量下载

    在"java实现HTML解析图片批量下载"这个项目中,我们将主要关注两个核心部分:HTML解析和图片下载。 首先,我们需要引入Jsoup库。在你的`pom.xml`文件(如果你使用的是Maven)中添加以下依赖: ```xml &lt;groupId&gt;...

    java工具类(String)

    Java中的字符串处理是编程工作中非常常见且重要的任务,而String工具类则提供了许多方便实用的方法,使得我们在处理字符串时能够更加高效。以下是对Java String工具类的详细解析: 首先,了解Java中的String类。在...

    XSLT 调用 Java 的类方法

    在这个Java类中,定义了一个静态方法`replace`,该方法接收一个字符串参数,并将字符串中的"unmi"替换为"unmi.cc"。 ##### 3. XML 输入文件 (example.xml) ```xml &lt;name&gt;unmi &lt;blog&gt;http://unmi.cc&lt;/blog&gt; ...

    全面理解java中的String.doc

    总之,理解Java中的String类,特别是它的创建方式、常量池以及`intern()`方法的工作原理,对于编写高效、内存友好的代码至关重要。在实际编程中,根据需求合理选择创建和操作字符串的方法,可以避免不必要的内存开销...

    java String源码和String常量池的全面解析

    Java String 源码和 String 常量池的全面解析 Java String 源码和 String 常量池是 Java 语言中非常重要的两个概念,它们之间存在着紧密的联系。在 Java 语言中,String 类是不可变的,finalize 方法被禁用,以确保...

    Java源码解析——看优秀源码最能使人进步

    Java.lang.String类是Java语言中的一种基本数据类型,该类的定义、字段属性、构造方法、equals方法、hashCode方法、charAt方法、compareTo方法、concat方法、indexOf方法、replace方法、split方法、substring方法、...

    JAVA字符串函数一览.txt

    `replace()` 方法用于替换字符串中的字符或子字符串。 - **方法签名**: - `String replace(char original, char replacement)` - `String replace(CharSequence original, CharSequence replacement)` - **示例...

    java 中根据html模板生成新的html

    然后在Java代码中配置FreeMarker并解析模板: ```java // 加载配置 Configuration cfg = new Configuration(Configuration.VERSION_2_3_30); cfg.setClassForTemplateLoading(this.getClass(), "/"); // 获取模板 ...

    java String 转成Double二维数组的方法

    在Java编程中,有时我们需要将字符串(String)数据转换为其他数据类型,比如将字符串表示的数字转换为浮点数(Double)。当涉及到二维数组时,这个过程可能会稍微复杂一些。本文将详细介绍如何将一个包含浮点数字符...

    String类方法总结

    1. **charAt(int index)**:此方法允许通过提供一个整数索引来检索`String`中的单个字符。例如,`str.charAt(0)`将返回字符串`str`的第一个字符。 2. **indexOf()系列方法**: - `indexOf(int ch)`:返回指定字符...

    JAVA常用类的使用方法

    - StringTokenizer 是用来解析字符串成多个子串的工具类,常用构造方法为 `StringTokenizer(String str, String delimiters)`,并提供 `nextToken()` 方法来获取下一个分隔后的子串。 6. **StringBuffer 类**: -...

    JAVA中常用类的常用方法.pdf

    JAVA中常用类的常用方法主要涵盖了java语言中基础类库的关键类以及它们提供的主要方法。以下是针对文档内容的详细解释: 1. java.lang.Object类 Object类是Java中所有类的超类,它提供了多种方法,这些方法在Java中...

    java string类的常用方法详细介绍

    在Java中,字符串被视为对象,因此我们可以通过调用String类的各种方法来处理字符串。以下是一些常用的String类方法的详细说明: 1. 构造函数: - `String(byte[] bytes)`: 这个构造函数接收一个字节数组,并根据...

    java字符串的处理.pdf

    在Java编程中,字符串的处理是一项基本而重要的技能,尤其是在文本处理、数据解析和用户界面交互等场景中。本篇将基于《java字符串的处理.pdf》的内容,深入探讨Java中字符串的基本概念、处理方式以及相关类库的使用...

Global site tag (gtag.js) - Google Analytics