1. 程式人生 > >XML和DTD,正則表示式

XML和DTD,正則表示式

XML

即可擴充套件標記語言,一種文件結構

 可以儲存資料,傳輸資料,做屬性檔案。

 ·處理XML的相關技術
 ·.定義XML資料結構的技術
 ·顯示和列印XML資料的技術
 ·XML資料結構轉換技術

 應用程式對接收XML Processor傳遞來的XML樹進行處理,向用戶提供服務。
 解決XML文件中具有相同名稱的元素和屬性命名的衝突問題。

 可以為元素提供預設的URI,與相同URI關聯的元素和屬性屬於同一個名稱空間。

DTD是用來規範XML檔案的格式,必須出現在標頭檔案中,一遍XML校驗器在一開始便可以得到XML檔案的格式定義。DTD是一套關於標記符的語法規則,它定義了可用在文件中的元素、屬性和實體,以及這些內容之間的關係。

DTD的基本結構

DTD語法格式如下:

<!DOCTYPE 根元素名稱[
<!ELEMENT 子元素名稱(#PCDATA)>
]>

引數說明:

  • <!DOCTYPE:文件型別宣告的起始定界符;
  • 根元素名稱[:一個XML文件只有一個根元素,如果XML文件使用DTD,那麼根元素的名稱就在這裡指定;
  • <!ELEMENT子元素名稱(#PCDATA)>:用來定義出現在文件中的元素;
  • ]>:文件型別宣告的結束界定符。

正則表示式

描述了一種字串匹配的模式(pattern),可以用來檢查一個串是否含有某種子串、將匹配的子串替換或者從某個串中取出符合某個條件的子串等。

正則表示式的元件可以是單個的字元、字元集合、字元範圍、字元間的選擇或者所有這些元件的任意組合。

正則表示式是由普通字元(例如字元 a 到 z)以及特殊字元(稱為"元字元")組成的文字模式。模式描述在搜尋文字時要匹配的一個或多個字串。正則表示式作為一個模板,將某個字元模式與所搜尋的字串進行匹配。


一個例子

import java.util.Scanner;

public class Counts {
    public static void main(String[] args) {
        System.out.println("請輸入一串字元:");
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        //sc.close();
        count(str);
    }

    private static void count(String str) {
        String s= "[\u4e00-\u9fa5]";
        String s1="[a-zA-Z]";
        String s2="[0-9]";
        String s3="[\\s+]";
        int ca=0;//漢字
        int le=0;//字母
        int num=0;//數字
        int kg=0;//空格
        int ot=0;//其它
        char[] c = str.toCharArray();
        String[] ss=new String[c.length];
        for(int i=0;i<c.length;i++){
            ss[i]=String.valueOf(c[i]);
        }
        for(String sss:ss){
            if(sss.matches(s)){
                ca++;
            }else if(sss.matches(s1)){
                le++;
            }else if(sss.matches(s2)){
                num++;
            }else if(sss.matches(s3)){
                kg++;
            }else{
                ot++;
            }
        }
        System.out.println("漢字個數:"+ca);
        System.out.println("字母個數:"+le);
        System.out.println("數字個數:"+num);
        System.out.println("空格個數:"+kg);
        System.out.println("其他字元個數:"+ot);
    }

}