您的位置: 网站首页 > 程序开发 > Java程序设计 > 第5章 字符串操作 > 【5.5 上 机 实 验】

5.5 上 机 实 验

 

5.5 

1.编写一个进行简单字符串替换的例子,例如给出这样一句话“用鼠标点击这个文本框,会弹出一个文本框,点击确定按钮,关闭文本框。”,要求编写子程序把字符串中所有“点击”二字替换成“单击”,并输出替换后的结果。

/** ReplaceString.java @author ZDS

 * 2007-2-18 下午15:09:24 */

package chap05;

/** 把字符串中的某个词替换为另一个词*/

public class ReplaceString {

       public static void main(String[] args) {

        String text="用鼠标点击该文本框,会弹出一个文本框,点击确定按钮,关闭文本框。";

        System.out.println(replace("点击", "单击", text));

       }

       // 在字符串inString中查找字符串oldStr,然后替换为newStr

   public static String replace(String oldStr, String newStr, String inString){

        int nLen = inString.length();

        int repLen = oldStr.length();

        StringBuffer buffer = new StringBuffer();   // 替换后的字符串缓冲区

        int p = 0;  // 用于保存当前替换的位置

        while (p < nLen){

            int start = inString.indexOf(oldStr, p);

            if (start == -1) {

                buffer.append(inString.substring(p));

                break;  // 未找到要替换的目标,跳出循环

            }

            buffer.append(inString.substring(p, start));

            buffer.append(newStr);

            p = start + repLen;// 移动到下一个替换位置

        }

        return buffer.toString();

       }

}

2.使用正则表达式,把字符串中的某些“-”号替换为“.”,如字符串为“程序1行的结果如图2-3所示;程序2-1运行的结果如图2所示;程序3运行的结果如表3-5所示;程序4的代码为System.out.println(x-y),运行结果如图5-6所示”。要求只替换“如图2-3所示”、“如表3-5所示”和“如图5-6所示”这种文字模式中的“-”号,而不能替换“程序2-1和“System.out.println(x-y)”这种文字中的“-”号。

此外“如图5-6所示”这样的文字中在“-”前面和后面允许有空格,但替换后不能有空格,比如应该替换为“如图5-6所示”,而不应该是“如图5-6所示”。

整个字符串替换后的结果为“程序1运行的结果如图2-3所示;程序2-1运行的结果如图2所示;程序3运行的结果如表3-5所示;程序4的代码为System.out.println(x-y),运行结果如图5-6所示”。

程序代码如下:

/** RegexMatcher.java @author ZDS

 * 2007-2-18 下午15:09:24 */

packagechap05;

importjava.util.regex.Matcher;

importjava.util.regex.Pattern;

/** 替换字符串中的如图n-m、如表n-m为如图n.m、如表n.m */

publicclass RegexMatcher {

    public static void main(String[] args) {

        String text = "程序1运行的结果如图2-3所示;程序2-1运行的结果如图2" +

            "所示;程序3运行的结果如表3 - 5所示;程序4的代码为" +

            "System.out.println(x-y)+运行结果如图15- 6所示";

        System.out.println(replace(text));

       }

           // 在字符串inString中查找字符串oldStr,然后替换为newStr

       public static String replace(String inString) {

        Pattern p = Pattern.compile("([表图]\\d+)\\s*\\-\\s*(\\d+所示)");

        StringBuffer buffer = new StringBuffer();   // 替换后的字符串缓冲区

       

        int n = 0;  // 用于保存当前替换的位置

        Matcher m = p.matcher(inString);

        while (m.find()) {

            int start = m.start();

            buffer.append(inString.substring(n, start));

            buffer.append(m.group(1));

            buffer.append('.');

            buffer.append(m.group(2));

            n = m.end();

        }

       

        // 添加字符串的末尾

        buffer.append(inString.substring(n));

        return buffer.toString();

       }

}