<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    String.replaceAll

    下面的程序被設計用來打印它的類文件的名稱。如果你不熟悉類字面常量,那么我告訴你Me.class.getName()將返回Me類完整的名稱,即“com.javapuzzlers.Me”。那么,這個程序會打印出什么呢?

    package com.javapuzzlers;

    public class Me {

        public static void main(String[] args){

            System.out.println(

                 Me.class.getName().

                    replaceAll(".","/") + ".class");

        }

    }

    該程序看起來會獲得它的類名(“com.javapuzzlers.Me”),然后用“/”替換掉所有出現的字符串“.”,并在末尾追加字符串“.class”。你可能會認為該程序將打印com/javapuzzlers/Me.class,該程序正式從這個類文件中被加載的。如果你運行這個程序,就會發現它實際上打印的是///////////////////.class。到底怎么回事?難道我們是斜杠的受害者嗎?

    問題在于String.replaceAll接受了一個正則表達式作為它的第一個參數,而并非接受了一個字符序列字面常量。(正則表達式已經被添加到了Java平臺的1.4版本中。)正則表達式“.”可以匹配任何單個的字符,因此,類名中的每一個字符都被替換成了一個斜杠,進而產生了我們看到的輸出。

    要想只匹配句點符號,在正則表達式中的句點必須在其前面添加一個反斜杠(")進行轉義。因為反斜杠字符在字面含義的字符串中具有特殊的含義——它標識轉義字符序列的開始——因此反斜杠自身必須用另一個反斜杠來轉義,這樣就可以產生一個轉義字符序列,它可以在字面含義的字符串中生成一個反斜杠。把這些合在一起,就可以使下面的程序打印出我們所期望的com/javapuzzlers/Me.class

    package com.javapuzzlers;

    public class Me {

        public static void main(String[] args){

            System.out.println(

                Me.class.getName().replaceAll(""".","/") + ".class");

        }

    }

    為了解決這類問題,5.0版本提供了新的靜態方法java.util.regex.Pattern.quote。它接受一個字符串作為參數,并可以添加必需的轉義字符,它將返回一個正則表達式字符串,該字符串將精確匹配輸入的字符串。下面是使用該方法之后的程序:

    package com.javapuzzlers;

    import java.util.regex.Pattern;

    public class Me {

        public static void main(String[] args){

            System.out.println(Me.class.getName().

                           replaceAll(Pattern.quote("."),"/") + ".class");

        }

    }

    該程序的另一個問題是:其正確的行為是與平臺相關的。并不是所有的文件系統都使用斜杠符號來分隔層次結構的文件名組成部分的。要想獲取一個你正在運行的平臺上的有效文件名,你應該使用正確的平臺相關的分隔符號來代替斜杠符號。這正是下一個謎題所要做的。

    posted on 2009-04-06 13:26 胡鵬 閱讀(649) 評論(0)  編輯  收藏 所屬分類: 數據結構java基礎

    導航

    <2009年4月>
    2930311234
    567891011
    12131415161718
    19202122232425
    262728293012
    3456789

    統計

    常用鏈接

    留言簿(3)

    隨筆分類

    隨筆檔案

    agile

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 久久这里只精品99re免费| 日本三级在线观看免费| 亚洲精品尤物yw在线影院| 久久国产精品免费一区二区三区| 亚洲av永久无码精品表情包| 很黄很黄的网站免费的| 精品久久久久亚洲| 亚洲av中文无码乱人伦在线咪咕| 波多野结衣在线免费视频| 麻豆一区二区三区蜜桃免费| 亚洲免费在线播放| 免费国产精品视频| 一级毛片在线免费看| 亚洲国产成人AV网站| 久久久久亚洲精品无码系列| 成人免费看片又大又黄| a毛片免费播放全部完整| 日韩亚洲国产高清免费视频| 中文字幕精品亚洲无线码一区| 五月婷婷综合免费| 国产特黄特色的大片观看免费视频 | 一区二区三区免费视频观看 | 丝袜足液精子免费视频| 精品久久久久久亚洲精品| 亚洲黄黄黄网站在线观看| av无码免费一区二区三区| 国产特黄一级一片免费| 中文字幕乱码亚洲精品一区| 亚洲精品无码久久久影院相关影片 | 亚洲av无码国产精品色午夜字幕| 在线免费观看国产视频| 在线免费观看亚洲| 久久久久久国产a免费观看不卡| 亚洲熟女www一区二区三区| 亚洲一级二级三级不卡| 一本色道久久88亚洲综合 | 精品一卡2卡三卡4卡免费视频| 日韩亚洲综合精品国产| 77777午夜亚洲| 亚洲精品无码久久毛片波多野吉衣| 国产亚洲人成网站在线观看|