PHP字串長度找子字串與取代字串的常用函數

PHP在字串的操作上,有非常多的相關函數可以使用,我們在這裡只介紹經常會使用到的字串操作函數。像是如何取得字串的長度、在某一個字裏面尋找子字串首次出現的位置、以及字串的取代函數...等等。這些都是在編寫程式的時候,頻繁被程式設計師使用到的基礎函數。 取得字串長度 <?...

顯示具有 Java 標籤的文章。 顯示所有文章
顯示具有 Java 標籤的文章。 顯示所有文章

2014年8月30日 星期六

使用DefaultTableModel注入表格資料 - Java視窗程式JTable元件應用


package test.swing.jtable;

import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.UIManager;
import javax.swing.border.EmptyBorder;

public class TestDefaultTableModel extends JFrame {

  public static void main(String[] args) {    
        TestDefaultTableModel frame = new TestDefaultTableModel();
      frame.setVisible(true);
  }

  public TestDefaultTableModel(){    
    setTitle("Test DefaultTableModel for version 1.0.1");    
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setBounds(100100450500);  //(左邊界,上邊界,宽度,長度)
    JPanel contentPane = new JPanel();
    contentPane.setBorder(new EmptyBorder(10101010));  //(上,左,下,右)
    setContentPane(contentPane);
    
    //設置Layout的樣式來呈現component之間在Panel上的位置關係
    contentPane.setLayout(new BorderLayout());
    
    //第一種方式: 為table初始宣告一些測試資料  (常用方法1)
    JTable table = new JTable(new Object[][]{
        {"aaa000","aaa001","aaa002"},
        {"bbb000","bbb001","bbb002"},
        {"ccc000","ccc001","ccc002"}}
        new Object[]{"Title A","Title B","Title C"});
    
    //第二種方式: 為table初始宣告一些測試資料  (常用方法2)
    /*Object[][] dataVector = new Object[][]{
        {"xxx000","xxx001","xxx002"},
        {"yyy000","yyy001","yyy002"},
        {"zzz000","zzz001","zzz002"}};
    Object[] columnIdentifiers = new Object[]{"Title X","Title Y","Title Z"};
    DefaultTableModel model = new DefaultTableModel();
    model.setDataVector(dataVector, columnIdentifiers);
    JTable table = new JTable(model);*/      
    
    //第三種方式: 逐一加入每一欄位名稱與該欄位的所有記錄  (為table初始宣告一些測試資料)
    /*DefaultTableModel model = new DefaultTableModel();
    model.addColumn("columnName0", new Object[]{"cn000","cn003","cn006"});
    model.addColumn("columnName1", new Object[]{"cn001","cn004","cn007"});
    model.addColumn("columnName2", new Object[]{"cn002","cn005","cn008"});
    JTable table = new JTable();
    table.setModel(model);*/
    
    //第四種方式: 以Vector逐一加入每一欄位名稱與該欄位的所有記錄  (為table初始宣告一些測試資料)
    /*DefaultTableModel model = new DefaultTableModel();
    Vector cnv = new Vector();
    cnv.add("cln000");
    cnv.add("cln001");
    model.addColumn(new String("columnName0"), cnv);
    cnv = new Vector();
    cnv.add("cln002");
    cnv.add("cln003");
    model.addColumn(new String("columnName1"), cnv);
    cnv = new Vector();
    cnv.add("cln004");
    cnv.add("cln005");
    model.addColumn(new String("columnName2"), cnv);
    JTable table = new JTable(model);*/
    
    //第五種方式: 先加人欄位,後加入資料  (為table初始宣告一些測試資料)
    /*DefaultTableModel model = new DefaultTableModel();
    model.setColumnIdentifiers(new Object[]{"columnName0","columnName1", "columnName2"});
    model.addRow(new Object[]{"coln000","coln001","coln002"});
    model.addRow(new Object[]{"coln003","coln004","coln005"});
    model.addRow(new Object[]{"coln006","coln007","coln008"});
    JTable table = new JTable();
    table.setModel(model);*/
    
    contentPane.add(new JScrollPane(table), BorderLayout.CENTER);    
  }
}

使用Object陣列注入表格資料 - Java視窗程式JTable元件應用


package test.swing.jtable;

import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.UIManager;
import javax.swing.border.EmptyBorder;

public class TestDefaultTableModel extends JFrame {

  public static void main(String[] args) {    
        TestDefaultTableModel frame = new TestDefaultTableModel();
      frame.setVisible(true);
  }

  public TestDefaultTableModel(){    
    setTitle("Test injected some data to JTable.");    
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setBounds(100100450500);  //(左邊界,上邊界,宽度,長度)
    JPanel contentPane = new JPanel();
    contentPane.setBorder(new EmptyBorder(10101010));  //(上,左,下,右)
    setContentPane(contentPane);
    
    //設置Layout的樣式來呈現component之間在Panel上的位置關係
    contentPane.setLayout(new BorderLayout());
    
    //以Object陣列為table初始宣告一些測試資料
    JTable table = new JTable(new Object[][]{
        {"aaa000","aaa001","aaa002"},
        {"bbb000","bbb001","bbb002"},
        {"ccc000","ccc001","ccc002"}}
        new Object[]{"Title A","Title B","Title C"});   
    
    contentPane.add(new JScrollPane(table), BorderLayout.CENTER);    
  }
}

2012年7月18日 星期三

equals(Object obj)方法 - Java日曆類別

回java日曆類別使用主頁

equals(Object obj)方法

比較目前日曆時間與指定日曆時間是否相等。


程式範例

package jcode.test.calendar;

import java.util.Calendar;

public class Sample029 {

  /**
   @param args
   */
  public static void main(String[] args) {
    
    //cal1為2012/7/18 (目前時間)
    Calendar cal1 = Calendar.getInstance();
    
    //cal2為2012/7/18
    Calendar cal2 = Calendar.getInstance();    
    
    if(cal1.equals(cal2)){
      System.out.println("兩日曆相等");
    }

  }

}


執行結果








getTime()方法 - Java日曆類別

回java日曆類別使用主頁

getTime()方法

回傳代表目前日曆時間值的時期物件。


程式範例

package jcode.test.calendar;

import java.util.Calendar;
import java.util.Date;

public class Sample018 {

  /**
   @param args
   */
  public static void main(String[] args) {
    Calendar cal = Calendar.getInstance();
    
    Date now = cal.getTime();
    System.out.println("現在的時間: "+now);

  }

}


執行結果








創建日曆實體 - Java日曆類別

回java日曆類別使用主頁

創建日曆實體

首先要操作「Calendar」日曆類別的函式前,需要先創建日曆的類別實體,
可以透過以下四種方式來建立實體類別:
  •   使用預設getInstance()方法  (最常使用方式)
  •   傳入語系的getInstance(Locale aLocale)方法
  •   傳入時區的getInstance(TimeZone zone)方法
  •   傳入時區和語系的getInstance(TimeZone zone, Locale aLocale)方法

程式範例

當我們創建Calendar類別實體(Calendar cal = Calendar.getInstance();),還需要配合日曆類別的相關屬性與方法一起使用,請再回到Java日曆類別使用頁面, 繼續學習。
package jcode.test.calendar;

import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
import java.util.TimeZone;

public class Sample011 {

  /**
   @param args
   */
  public static void main(String[] args) {
    
    //系統預設語系
    Locale defLocale = Locale.getDefault()//繁體中文
    //系統預設時區
    TimeZone defZone = TimeZone.getDefault();  //台灣標準時間
    System.out.println("預設語系: "+defLocale+" 預設時區: "+defZone.getID());
    
    //指定語系
    Locale locale = Locale.US;  //英文
    //指定時區
    TimeZone zone = TimeZone.getTimeZone("America/Los_Angeles")//太平洋標準時間
    System.out.println("指定語系: "+locale+" 指定時區: "+zone.getID());    
    
    //1.使用預設時區和預設語系建立Calendar實體  (最常使用方式)
    Calendar cal = Calendar.getInstance();
    
    //2.使用指定語系建立Calendar實體    
    Calendar cal1 = Calendar.getInstance(locale);
    
    //3.使用指定時區建立Calendar實體    
    Calendar cal2 = Calendar.getInstance(zone);    
    
    //4.使用指定時區和指定語系建立Calendar實體    
    Calendar cal3 = Calendar.getInstance(zone,locale);    

  }

}


執行結果







2012年7月17日 星期二

取得年份 - Java日曆類別

回java日曆類別使用主頁

取得年份

先以Calendar.YEAR得到表示年的欄位代碼,再使用Calendar的get方法找到目前的年份。


程式範例

package jcode.test.calendar;

import java.util.Calendar;

public class Sample002 {

  /**
   @param args
   */
  public static void main(String[] args) {
    Calendar cal = Calendar.getInstance();    
    //取得今年年份
    int year = cal.get(Calendar.YEAR);
    System.out.println("今年是"+year+"年");

  }

}


執行結果







取得日(day) - Java日曆類別

回java日曆類別使用主頁

取得日(day)

若要取得本月第幾日可以先以Calendar.DAY_OF_MONTH得到本月第幾日欄位代碼,
再以該欄位代碼為Calendar的get方法引數獲得本月第幾日整數值。


程式範例

package jcode.test.calendar;

import java.util.Calendar;

public class Sample005 {

  /**
   @param args
   */
  public static void main(String[] args) {
    Calendar cal = Calendar.getInstance();
    
    //取得本月份的第幾日  (方法一)
    int dayOfMonth1 = cal.get(Calendar.DAY_OF_MONTH);
    System.out.println("本月的"+dayOfMonth1+"日 (方法一)");
    
    //取得本月份的第幾日  (方法二)
    int dayOfMonth2 = cal.get(Calendar.DATE);
    System.out.println("本月的"+dayOfMonth2+"日 (方法二)");

  }

}


執行結果








白天(AM) / 夜晚(PM) - Java日曆類別

回java日曆類別使用主頁

白天(AM) / 夜晚(PM)

若要取得白天或夜晚可以先以Calendar.AM_PM得到白天或夜晚欄位代碼,
再以該欄位代碼為Calendar的get方法引數獲得白天或夜晚的整數值。


程式範例

package jcode.test.calendar;

import java.util.Calendar;

public class Sample006 {

  /**
   @param args
   */
  public static void main(String[] args) {
    Calendar cal = Calendar.getInstance();
    
    //取得現在是白天(AM)或夜晚(PM)的整數值
    int amPm = cal.get(Calendar.AM_PM);
    
    //判斷取得的數值等於白天或夜晚
    switch(amPm){
    case Calendar.AM:
      System.out.println("白天");
      break;
    case Calendar.PM:
      System.out.println("夜晚");    
    }

  }

}


執行結果







取得小時 - Java日曆類別

回java日曆類別使用主頁

取得小時

若要取得小時可以先以Calendar.HOUR_OF_DAY得到小時欄位代碼,
再以該欄位代碼為Calendar的get方法引數獲得現在時刻的整數值。


程式範例

package jcode.test.calendar;

import java.util.Calendar;

public class Sample007 {

  /**
   @param args
   */
  public static void main(String[] args) {
    Calendar cal = Calendar.getInstance();
    
    //取得現在時刻 (12小時制)
    int hour = cal.get(Calendar.HOUR);
    System.out.println(hour+"點");
    
    //取得現在時刻 (24小時制)
    int hourOfDay = cal.get(Calendar.HOUR_OF_DAY);
    System.out.println(hourOfDay+"點");    

  }

}


執行結果







2012年7月13日 星期五

split(String regex)方法 - java字串類別

回java字串常用函式主頁

split(String regex)方法

以給定的正則表示式(regular expression)來分割目前字串。


範例程式

package jcode.test.string;

public class Sample020 {

  /**
   @param args
   */
  public static void main(String[] args) {
    String str = "first,second,third";
    String[] ss = str.split(",");
    for(int i=0;i<ss.length;i++){
      System.out.println(ss[i]);      
    }
    
  }

}


執行結果

以「,」為分隔符號,來切割目前字串為first與second和third三部份








trim()方法 - java串字類別

回java字串常用函式主頁

trim()方法

去除目前字串的前後空白字元。


範例程式

package jcode.test.string;

public class Sample017 {

  /**
   @param args
   */
  public static void main(String[] args) {
    String str = "  abc13535  ";
    System.out.println("[去除空白]str字串: ");
    System.out.println(str.trim());

  }

}


執行結果









isEmpty()方法 - java字串類別

回java字串常用函式主頁

isEmpty()方法

用來判斷目前的字串是否為空值,與目前字串的length()等於0為等價的判斷。


範例程式

package jcode.test.string;

public class Sample016 {

  /**
   @param args
   */
  public static void main(String[] args) {
    String str = "";
    if(str.isEmpty()){
      System.out.println("str為空字串");
    }

  }

}


執行結果








length()方法 - java字串類別

回java字串常用函式主頁

length()方法

回傳目前字串的長度。
長度等同於在目前字串中的Unicode單位的數量。


範例程式

package jcode.test.string;

public class Sample015 {

  /**
   @param args
   */
  public static void main(String[] args) {
    String str = "abcde12345";
    System.out.println("str字串長度: "+str.length());

  }

}


執行結果








2012年7月11日 星期三

lastIndexOf(String str)方法 - java字串類別

回java字串常用函式主頁

lastIndexOf(String str)方法

在目前字串中,從尾部開始找出給定字串第一次出現的索引位置。
空子串通常表示目前的字串長度為0


範例程式

package jcode.test.string;

public class Sample006 {

  /**
   @param args
   */
  public static void main(String[] args) {
    String str = "ab6cdefg1263457";    
    int idx = str.lastIndexOf("6");
    System.out.println("[右邊開始找]idx值: "+idx);

  }

}


執行結果








substring(int beginIndex)方法 - java字串類別

回java字串常用函式主頁

substring(int beginIndex)方法

回傳在目前字串中擮取的子字串,範圍從給定開始索引位置延伸到字串結尾。


範例程式

package jcode.test.string;

public class Sample008 {

  /**
   @param args
   */
  public static void main(String[] args) {
    String str = "ab6cdefg1263457";  
    String subStr = str.substring(10);
    
    System.out.println("[從索引10到字串結尾]subStr子字串: "+subStr);
  }

}


執行結果








indexOf(String str)方法 - java字串類別

回java字串常用函式主頁

indexOf(String str)方法

回傳在目前字串中第一次找到指定字串的索引位置。


範例程式

package jcode.test.string;

public class Sample004 {

  /**
   @param args
   */
  public static void main(String[] args) {
    String str = "abcdefg1263457";
    int idx = str.indexOf("cd");
    System.out.println("idx值: "+idx);
  }

}


執行結果








replace(char oldChar, char newChar)方法 - java字串類別

回java字串常用函式主頁

replace(char oldChar, char newChar)方法

將在目前字串中所有oldChar的字元取代為newChar字元。


範例程式

package jcode.test.string;

public class Sample010 {

  /**
   @param args
   */
  public static void main(String[] args) {
    String str = "abcdefg123456789";
    
    //舊的被取代字串
    String oldChar = "abcdefg";
    //新的取代字串
    String newChar = "00000";
    
    String newString = str.replace(oldChar, newChar);
    System.out.println("newString新字串: "+newString);
  }

}


執行結果








2012年6月21日 星期四

Java IO讀取(read)、寫入(write)與拷貝(copy)檔案


/**
   * Java IO讀取檔案 (
java io read file)
   @param fileName
   @return
   @throws IOException
   */
  public static List<String> readFile(String fileNamethrows IOException {    
    List<String> rst = new ArrayList<String>();
    BufferedReader br = null;
    try{
      br = new BufferedReader(new FileReader(fileName));
      String in = null;
      while((in = br.readLine()) != null){
        rst.add(in);
      }
    }catch(IOException ioe){
      throw ioe;
    }finally{
      br.close();      
    }    
    return rst;
  }  
  
  /**
    Java IO寫入檔案  (java io write file)
   @param data
   @param fileName
   @throws IOException
   */
  public static void writeFile(List<String> data, String fileNamethrows IOException {
    BufferedWriter bw = new BufferedWriter(new FileWriter(fileName));
    try{
      for(String d:data){
        bw.write(d);
        bw.newLine();        
      }
      bw.flush();
    }catch(IOException ioe){
      throw ioe;
    }finally{
      bw.close();      
    }    
  }
  
  /**
    Java IO拷貝檔案 
(java io copy file)
   @param source
   @param dest
   @throws IOException
   */
  public static void copyFile(File source, File destthrows IOException {
    InputStream fis = null;
    OutputStream fos = null;    
    try{
      fos = new FileOutputStream(dest);
      fis = new FileInputStream(source);
      byte[] b = new byte[1024];
      int off = 0;
      int len = 0;
      while((len = fis.read(b)) != -1){
        fos.write(b,off,len);        
      }
      fos.flush();
    }catch(IOException ioe){
      throw ioe;
    }finally{
      fos.close();
      fis.close();
    }
  }