实现java 1.2中的replaceAll功能

use*_*916 3 java

我有以下代码

import java.io.*;

public class Test{
public static void main(String args[]){
  String Str = new String("Welcome to java world !");

  System.out.print("Return Value :" );
  System.out.println(Str.replaceAll(" ",
                     "%20" ));
}
}
Run Code Online (Sandbox Code Playgroud)

这会产生以下结果:

Return Value :Welcome%20to%20java%20world%20!
Run Code Online (Sandbox Code Playgroud)

但问题是我在我们的项目中使用遗留的java 1.2,不支持String类中的replaceAll或StringBuffer类中的replace.如何在java 1.2中实现replaceAll逻辑以用%20替换所有空间

Mak*_*oto 5

认真,当我说,你应该迁移从1.2了,但即使你有一个古老的版本搞乱,它不像你没有一些原始的工具.

StringTokenizer 可以使用,并且考虑到默认情况下它可以对带有空格的字符串进行标记,这应该会让你了解如何解决这个问题.

步骤很简单:

  • 创建一个StringTokenizer实例
  • 通过tokenizer使用字符串并将其放入 StringBuffer
  • 该字符串被消耗之后,立即将"%20"
  • 如果没有要添加的令牌,请不要添加上一个字符串

作为一种粗略的,未经测试的*方法,这是我想要的:

public String replace(String phrase, String token, String replacement) {
    StringTokenizer st = new StringTokenizer(phrase, token);
    StringBuffer stringBuffer = new StringBuffer();
    while(st.hasMoreTokens()) {
        stringBuffer.append(st.nextToken());
        stringBuffer.append(replacement);
    }
    return stringBuffer.toString();
}
Run Code Online (Sandbox Code Playgroud)

*:不可测试; 我不能也不会下载Java 1.2的副本.