package com.test;

import java.util.Scanner;

/**
*2017-3-5 下午2:54:15
* @param
* @since
* @return
*/
public class InterceptionStr {
// 输入为一个字符串和字节数,输出为按字节截取的字符串。但是要保证汉字不被截半个,
// 如"我ABC"4,应该截为"我AB",输入"我ABC汉DEF"6,应该输出"我ABC",
// 而不是"我ABC+汉的半个"。

// 要进行截取操作的字符串
static String s;
// 截取的字符串的字节数
static int n;
public static void main(String[] args) {
System.out.println("请输入字符串");
// 从键盘输入字符串
Scanner scStr=new Scanner(System.in);
// //获取字符串
s=scStr.next();
System.out.println(s);
// 将Scanner对象中的内容以字符串的形式取出来
System.out.println("请输入字节:");
// 从键盘获取字符串
Scanner scByte=new Scanner(System.in);
// 将Scanner对象中的内容以数值的形式取出来
n=scByte.nextInt();
Interception(setValue());
}
// 将字符串转换成字符串数组
public static String[] setValue(){
// 创建字符串数组
String[] string=new String[s.length()];
for (int i = 0; i < string.length; i++) {
// 将字符串s中的第i个字符取出,放入字符数组中string中
string[i]=s.substring(i, i+1);
}
// 返回这个字符数组
return string;
}
public static void Interception(String[] string){
int count =0;
// 汉字的正则表达式
String m="[\u4e00-\u9fa5]";
System.out.println("以每"+n+"字节划分的字符串如下所示:");
for (int i = 0; i < string.length; i++) {
// 将字符数组中的每一个元素与正则表达式进行匹配,如果相同则返回true
if(string[i].matches(m)){
// 如果是汉字,计数器count+2
count=count+2;
}else{
count=count+1;
}
// 如果当前计数器count的值小于n,则输出当前字符
if(count<n){
System.out.println(string[i]);
}else if(count==n){
// 如果当前计数器count的值等于n,则输出当前字符串
System.out.println(string[i]);
// 换行
count=0;
System.out.println();
}else{
// 如果当前计数器count的值大于n,则计数器count清零,接着执行外部循环
count=0;
System.out.println();
}
}
}
}

 

 

 控制台如果出现乱码问题

在代码区域右键 -> run as -> run configurations -> common(右侧) -> console encoding 
出现此错误,此时的编码格式应该是UTF-8,选择Other,这时可能没有GBK选项,没有,则执行之后操作。