歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Java編寫截取字符串的函數

import java.util.Scanner;

/*
 * 編程:編寫一個截取字符串的函數,輸入為一個字符串和字節數,輸出為按字節截取的字符串。 但是要保證漢字不被截半個,如“我ABC”4,應該截為“我AB”,輸入“我ABC漢DEF”,6,應該輸出為“我ABC”而不是“我ABC+漢的半個”。
 */
public class SplitString {
 String SplitStr;
 StringBuffer sb;
 int SplitByte;

 public SplitString(StringBuffer str, int bytes) {
  SplitStr = str.toString();
  SplitByte = bytes;
  sb = str;
  System.out.println("The String is:′" + SplitStr + "′;SplitBytes="
    + SplitByte);
 }

 public boolean isHan(char c) {
  if (c > 126 || c < 0) {// 雙字節字符串判斷是不是漢字
   return true;
  } else {
   return false;
  }
 }

 public void SplitIt() {
  // String temp = "";
  int len = SplitStr.length();
  int a = 0;// 計算漢字的個數
  int b = SplitByte;// 保存截取間隔
  if (SplitByte % 2 != 0)// 截取間隔如果是奇數,偶數則不需要處理
   SplitByte = SplitByte - 1;

  for (int i = 0; i < SplitStr.length(); i++) {
   if (isHan(SplitStr.charAt(i))) {
    len++;
    a++;
    // temp=SplitStr.substring(0,i-1)+SplitStr.charAt(i)+SplitStr.substring(i+1,len);
    // System.out.println("temp"+temp);
    sb.insert(i + a, " ");// 將有漢字的地方插一個空格
   }
  }

  SplitStr = sb.toString();
  System.out.println(SplitStr);
 
  int loopCount;
  loopCount = (len % SplitByte == 0) ? (len / SplitByte) : (len
    / SplitByte + 1);
  System.out.println("loop " + loopCount);
 
  for (int i = 0; i < loopCount; i++) {
   String s = "";
   if (i == loopCount - 1) {
    s = SplitStr.substring(i * SplitByte, len).replaceAll(" ", "");// 將空格替換掉
    System.out.println(s);
   } else {
    s = SplitStr.substring(i * SplitByte, ((i + 1) * SplitByte))
      .replaceAll(" ", "");
    System.out.println(s);
   }

  }

 }

 public static void main(String[] args) {
  Scanner in = new Scanner(System.in);
  System.out.println("請輸入字符串:");
  String str = in.nextLine();
  System.out.println("請輸入截取間隔:");
  int len = in.nextInt();
  StringBuffer sb = new StringBuffer(str);// String to StringBuffer
  SplitString ss = new SplitString(sb, len);
  ss.SplitIt();
 }
}

運行效果偶數截取沒問題,奇數截取還有點問題希望大家指正

Java項目中定時任務之Quartz的應用 http://www.linuxidc.com/Linux/2013-12/94443.htm

編寫高質量代碼 改善Java程序的151個建議 PDF高清完整版 http://www.linuxidc.com/Linux/2014-06/103388.htm

Java 8簡明教程 http://www.linuxidc.com/Linux/2014-03/98754.htm

Java對象初始化順序的簡單驗證 http://www.linuxidc.com/Linux/2014-02/96220.htm

Java對象值傳遞和對象傳遞的總結 http://www.linuxidc.com/Linux/2012-12/76692.htm

Java對象序列化ObjectOutputStream和ObjectInputStream示例 http://www.linuxidc.com/Linux/2012-08/68360.htm

Copyright © Linux教程網 All Rights Reserved