设为首页 加入收藏

TOP

Java编写截取字符串的函数
2014-11-23 22:15:44 来源: 作者: 【 】 浏览:29
Tags: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编写截取字符串的函数


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Ubuntu下读取某个目录下文件时如.. 下一篇C语言获取文件的SHA1哈希值

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: