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编写截取字符串的函数

Java项目中定时任务之Quartz的应用

编写高质量代码 改善Java程序的151个建议 PDF高清完整版

Java 8简明教程

Java对象初始化顺序的简单验证

Java对象值传递和对象传递的总结

Java对象序列化ObjectOutputStream和ObjectInputStream示例

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/05f6154b7eb98b2555afe0f06996e299.html