Java关于截取字符串的实现

  遇到这样一个问题,假设我们输入一串字符,不保证这一串字符里面是否有汉字,然后用户希望能过通过自己输入想要截断的字节数,将这个字符串截断输出,比如有这么一个字符串:“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);
	}
 大致上这样就可以实现了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值