遇到这样一个问题,假设我们输入一串字符,不保证这一串字符里面是否有汉字,然后用户希望能过通过自己输入想要截断的字节数,将这个字符串截断输出,比如有这么一个字符串:“def中国abc你好”,想要以3个字节输出,应该是怎么样的呢?
Java里面是如何实现呢?
其实这类问题主要是在中文与英文所占的字节数不一样的原因,中文是2个字节,英文和数字都是1个字节,理解了这个就很好实现了。
主要步骤是将字符串先转化成字符数组,代码如下:
/**
* 字符串转化成数组
* @param str
* @return
*/
public static String[] splitToArray(String str) {
String[] newStr = new String[str.length()];
for (int i = 0; i < newStr.length; i++) {
newStr[i] = str.substring(i,i+1);
}
return newStr;
}
然后就遍历每个字符,我们会声明一个计数变量,如果已达到用户要求的字节数,就会清零,然后输入之前截取的字符串。
public static void truncateStr(String str, int n) {
int count = 0;
String regex = "[\\u4e00-\\u9fa5]";
System.out.println(str.length());
String[] temp = splitToArray(str);
for (int i = 0; i < temp.length; i++) {
if (temp[i].matches(regex)) {
count +=2;
} else {
count +=1;
}
if(count<n){
System.out.print(temp[i]);
}else if(count == n ){
System.out.print(temp[i]);
count = 0;
System.out.println();
}else{
count = 0;
System.out.println();
}
}
}
最后就是在main方法中调用即可。
private static String inputStr = "";
private static int cbyte = 0;
public static void main(String[] args) {
System.out.println("请输入字符串:");
Scanner scanner = new Scanner(System.in);
inputStr = scanner.next();
System.out.println("请输入需要截断的字节数:");
Scanner scanner2 = new Scanner(System.in);
cbyte = scanner2.nextInt();
truncateStr(inputStr, cbyte);
}
大致上这样就可以实现了。
分享到:
相关推荐
主要介绍了java 实现截取字符串并按字节分别输出实例代码的相关资料,需要的朋友可以参考下
截取字符串“java程序教程”的前5个字节,字符串应该为“java程”,截取前6个字符,字符串也应该为“java程”,程序实现。
关于java按字节截取带有汉字的字符串的解法.不错的一个程序。我也是从高手那拿来的,觉得不错,传上来给感兴趣的朋友学习学习。
实现一个按字节来截取字符串的方法,功能类似于string类的substring方法,String类是按字符截取 的,例如"中国abc".substring(1,3),将返回“国a”。这里 要求按字节截取,一个英文字符当一个字节,一个中文字符当两...
在JAVA里面实现判断字符串长度,和截取字符串
编写程序完成如下功能:输出字符串“www.google.com”的长度,并分别计算并显示出‘o’ 与‘g’的个数,截取其中“google”进行输出显示。...3、分别使用String和StringBuffer类实现字符串的链接,分析比较它们的特点。
主要介绍了java 字符串截取的实例详解的相关资料,这里提供了实例代码帮助大家实现这样的功能,需要的朋友可以参考下
1.substring 方法 定义和用法 substring 方法用于提取字符串中介于两个指定下标之间的字符。 语法 stringObject.substring(start,stop) 参数 描述 start 必需。一个非负的整数,规定要提取的子串的第一个字符在 ...
${fn:substring(你要截取的字符串),beginIndex,endIndex} 下面是JSTL中自带的方法列表以及其描述 函数名 函数说明 使用举例 fn:contains 判断字符串是否包含另外一个字符串 ${fn:contains(name,> fn:...
正好遇到一个需求需要将字符串中特定的字符全部提取出来,这个如果是按常规的字符串处理的话非常的繁琐。于是想到用正则表达式来完成。项目需求是这样的:需要提取车牌号中最后一个数字,比如说:苏A7865提取5,苏A...
前后台实现精确截取指定长度字符串(考虑全角半角)前后台实现精确截取指定长度字符串(考虑全角半角)前后台实现精确截取指定长度字符串(考虑全角半角)前后台实现精确截取指定长度字符串(考虑全角半角)
主要为大家详细介绍了java实现中英文混合字符的截取方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
javascript截取字符串(支持中英文混合) 代码如下: [removed] var sub=function(str,n){ var r=/[^\x00-\xff]/g; if(str.replace(r,”mm”).length<=n){return str;} var m=Math.floor(n/2); for(var i=m;i<str>=n...
1、使用Document和Xpath进行对字符串进行操作 2、前端页面做锚点的效果 3、使用Xpath语法进行对字符串的做处理 4、富文本的字符串保存做二次的编辑 需求: 截取<p></p>里面的文字,并且找对应的文字进行匹配,如...
做为一个前端开发人员在网页展示中经常会碰到,标题过长,需要截取字符串,用CSS的实现的话各种兼容问题,各种坑。 让后台程序截一下,又各种推托,让后台按字节截一下更是和要了后台老命一样,最后可能只会安字符...
四、输入一个字符串,字符串是字母和数字的组合,编程实现输出一个新的字符串,要求字母在前面,数字在后面,顺序不变,例如:2s7ess83a 变成sessa2783 五、一个字符串,获取最长的一个单词,如有多个相同...
16. 编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如"我ABC"4,应该截为"我AB",输入"我ABC汉DEF",6,应该输出为"我ABC"而不是"我ABC+汉的半...
提供通过meteoInfo+geotools解析shp文件,提取出shp文件中的数据,javaj技术实现,获取边界线数据、中心点坐标、最大、最小经纬度值等
16. 编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如"我ABC"4,应该截为"我AB",输入"我ABC汉DEF",6,应该输出为"我ABC"而不是"我ABC+汉的半...
截取abcdefg右边的fg 方法一 [removed] string=”abcdefg” alert(string.substring(string.length-2,string.length)) [removed] 方法2 [removed] alert(“abcdefg”.match(/.*(.{2})/)[1]) ...