按指定长度截取字符串,考虑全角半角

开发者的避坑指南:在Apple Silicon Mac上构建RocketMQ Python客户端的完整心路历程 本文详细记录了在Apple Silicon Mac上构建RocketMQ Python客户端的完整过程,重点解决了架构兼容性问题。通过源码编译rocketmq-client-cpp库,修复构建脚本和CMake配置,最终成功在M2芯片MacBook Pro上部署RocketMQ Python客户端,为开发者提供了实用的避坑指南。 阅读详情

关于用Java来截取指定长度的字符串,我在网上看到很多帖子和方法,大都是说用substring(),但是如果考虑到全角半角的话,这是怎么也达不到期望值的。因为之前自己也用到过,所以把自己整理好的一些东西拿出来,希望能和大家分享下。如果还有更好更简洁的方法,望大侠们指点一二。

注:所有测试都是基于该值已通过必须输入的检查。
1.subByStrLenth() 在不考虑全角的情况下,即假定该字符串都是半角的。
2.subByFullWidth() 如果已确保该值都是由全角字符,即字符都是全角且指定长度是大于0的偶数的情况下。
3.subByStrByte() 考虑全角半角的截取,且舍掉半个汉字后,长度不足的情况下是否要在右边补空格。
// 按指定的长度来截取字符串,不管全角半角,一个字符一个长度。
public static String subByStrLength(String value, int length) {

	return value.length() > length ? new String(value.substring(0, length)) : value;
}

// 按指定的长度来截取字符串,前提是字符串是全角的,指定长度是大于0的偶数。
public static String subByFullWidth(String value, int length) {

	return value.getBytes().length > length ? new String(value.getBytes(), 0, length) : value;
}

// 按指定的长度下,考虑字符的全角半角,且当舍掉最后半个汉字后,长度不足的情况下是否要在右边补空格。
public static String subByStrByte(String value, int length, boolean paddingSpace) {

	String valueTemp = "";

	// 指定的长度下,考虑字符的全角半角,最后的汉字。
	if (value.getBytes().length > length) {
		for (char c : value.toCharArray()) {
			if (valueTemp.getBytes().length <= length) {
				valueTemp += c;

				if (valueTemp.getBytes().length == length) {
					break;

				} else if (valueTemp.getBytes().length > length) {
					char[] charTemp = valueTemp.toCharArray();
					valueTemp = "";

					for (int i = 0; i < charTemp.length - 1; i++) {
						valueTemp += charTemp[i];
					}

					break;
				}
			}
		}
	}

	// 指定的长度下,长度不足的情况是否要在右边补空格。

	if (paddingSpace) {
		StringBuffer valueBuffer = new StringBuffer(valueTemp);
		for (int i = 0; i < length - valueTemp.getBytes().length; i++) {
			valueBuffer.append(" ");
		}

		return valueBuffer.toString();
	}

	return valueTemp;
}

// 字符串的截取测试
public static void main(String[] args) {

	String str1 = "字符串的截取";
	String str2 = "字符串的截取test";

	System.out.println(subByStrByte(str2, 7, true));
	System.out.println(subByStrByte(str2, 7, false));

	System.out.println(subByStrLength(str2, 7));
	System.out.println(subByFullWidth(str1, 6));
}

第一个输出结果是带空格的字符串“字符串 ”。
运行结果:
字符串 
字符串
字符串的截取t
字符串
 
hwasan实例分析踩内存之一:camx进程stack tag-mismatch的三种解决方案 hwasan实例分析踩内存之一:camx进程stack tag-mismatch的三种解决方案。 阅读详情

相关推荐

ARM的CI-700和Arteris的NoC对比

设计理念:CI-700注重于为移动和客户端SoC提供定制化的互连解决方案,而Arteris的NoC更侧重于提供灵活、可配置的网络互连技术,适用于多种应用场景。性能与功耗:CI-700通过系统级缓存和网状拓扑结构优化性能和功耗,而Arteris的NoC通过物理感知和多协议支持来提升性能和降低功耗。功能安全:Arteris的NoC提供了功能安全支持,这对于汽车和工业应用尤为重要,而CI-700虽然也关注安全性,但未明确提及功能安全支持。互操作性。

ygyglg的专栏 2622

Java 按指定长度截取字符串,考虑全角半角

于用 Java 来截取指定长度的字符串,我在网上看到很多帖子和方法,大都是说用 substring() ,但是如果考虑到全角半角的话,这是怎么也达不到期望值的。因为之前自己也用到过,所以把自己整理好的一些东西拿出来,希望能和大家分享下。如果还有更好更简洁的方法,望大侠们指点一二。   注:所有测试都是基于该值已通过必须输入的检查。 1.  subByStrLenth() 在不考虑

csy92620的专栏 2498

AI时代,程序员何去何从?别慌,看完这篇你就明白了

AI时代程序员的发展方向 摘要:随着AI代码助手的普及,程序员行业面临变革。本文通过实际案例展示AI写代码的能力与局限:AI能生成基础功能代码(如RESTful API、数据处理脚本),但缺乏业务理解、系统设计和复杂逻辑处理能力。程序员的核心价值在于需求分析、架构设计、性能优化等高层能力。未来程序员应: 掌握AI工具提升效率 专注于创新和架构设计 培养业务理解能力 持续学习新技术 AI不会取代程序员,但会淘汰不会使用AI的程序员。建议开发者拥抱AI工具,将其作为助手而非威胁,聚焦高价值工作。

yunque_xianguang的博客 908

SpringBoot实现多线程

原文链接 代码地址:https://github.com/Snowstorm0/learn-async 1 线程同步和异步 线程同步:A线程要请求某个资源,但是此资源正在被B线程使用中,因为同步机制存在,A只能等待下去。耗时较长,安全性较高。 线程异步:A线程要请求某个资源,但是此资源正在被B线程使用中,因为没有同步机制存在,A线程仍然请求的到。 一个进程启动的多个不相干的进程,他们之间的相互关系为异步;同步必须执行到底后才能执行其他操作,异步可同时执行。 多个线程执行的时候需要同步,如果是单线程则不需要同

zbzcDZF的博客 1万+

RC模型车多电机驱动方案:从电调PWM原理到四电机安全连接实战

在电机控制领域,PWM(脉冲宽度调制)是实现精确调速的核心技术。其原理是通过调节固定周期内高电平的脉宽来编码控制指令,进而驱动电子调速器(电调)改变输出功率。这项技术对于需要多电机协同工作的场景,如RC模型车的差速转向或重型负载驱动,具有关键价值。它能实现动力的精细分配与同步,提升车辆的可控性与通过性。在实际应用中,为确保系统稳定,必须关注电流分配与信号同步问题。例如,通过为每个电机配备独立电调并采用信号并联(Y线)的方式,可以构建可靠的四电机驱动系统。这种方案能有效避免因单个电调过载或电机反电动势不一致导

weixin_30664615的博客 381

OpenMythos深度解析

本文深入解析了kyegomez/OpenMythos项目如何从第一性原理重建Claude Mythos的核心架构。该项目并非直接复制Claude,而是基于公开论文和实验结果推测其可能的设计理念,构建了包含多模态注意力、深度推理引擎、知识检索模块等六大核心组件的模块化架构。重点剖析了分组查询注意力(GQA)的实现细节,展示了KV头扩展等关键技术。该项目已成为大模型开源社区最受关注的研究之一,为理解Claude的架构思想提供了有价值的参考。

Crown_22的博客 518

发现网络的隐藏角落:深入探索Subby——极速子域名枚举工具

发现网络的隐藏角落:深入探索Subby——极速子域名枚举工具 subby An uber fast and simple subdomain enumeration tool using DNS and web requests with support for detecting wildcard DNS record...

gitblog_00022的博客 1241

HBuilderX结合Android Studio实现Uniapp安卓Apk高效离线打包指南

本文提供了一份详细的Uniapp安卓Apk离线打包实战指南。通过整合HBuilderX与Android Studio,手把手教你搭建本地编译环境、配置原生工程、执行核心打包流程,并分享快速更新资源和排查常见问题的技巧,助你彻底摆脱云端打包的排队依赖,实现高效、可控的应用构建。

weixin_28835551的博客 558

截取字符串的三种方法

字符串截取

lwaner的博客 1万+

自监督学习原理与代码实战案例讲解

自监督学习原理与代码实战案例讲解 作者:禅与计算机程序设计艺术 1. 背景介绍 1.1 自监督学习的起源与发展 1.1.1 监督学习的局限性

AI天才研究院 624

计算机视觉卷积神经网络(CNN)基础:从LeNet到ResNet

计算机视觉卷积神经网络(CNN)基础:从LeNet到ResNet,在计算机视觉领域,卷积神经网络(Convolutional Neural Network,CNN)已然成为推动众多任务发展的核心力量。从早期简单的图像识别,到如今复杂的目标检测、语义分割、图像生成等任务,CNN 都展现出了卓越的性能。CNN 的发展历程见证了一系列经典模型的诞生,其中 LeNet 作为开山之作,为 CNN 的发展奠定了基础,而 ResNet 则通过创新性的设计,突破了传统神经网络的限制,使得网络能够构建得更深、性能更优。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 14万+

按长度截取字符串

/// <summary> /// 截取字段长度 /// </summary> /// <param name="str">需要截取的字符串</param> /// <param name="Len">最大长度限制</param> ...

weixin_30905981的博客 500

Calibre DRC

calibre DRC的运行方法,包括merge gds和加用dummy rule加dummy的方法

m0_61544122的博客 1万+

区分全角和半角的字符串指定长度截取(或填充)

///         /// 获取制定字符串的前L位字符,注:半角字符只算半个字符         ///         /// 制定的字符串         /// 长度         /// 超出长度时追加的字符         ///         public static string SubGBString(string s, int l, string a

晖轩大师 2221

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

全角字符串的截取方法

公司做的是日本人项目,平时经常需要对一些字符串的值进行指定位数的截取,里面又经常是一些全角、半角混合的类型,当截不予到指定位数刚好是一个全角时,就不得不考虑怎么处理了,通常是少截取一位,将全角以后的全去掉。 所以,每次用到每次都要找老的项目,比较烦琐,还好最近不是太忙,赶快整理一下,方便以后使用。 public static String fromatStringRightJIS(String...

绿色天空 614

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

C#截取定长字符串(全角觠混合串)

使用如下函数便好,其实inputString是源串,len是要截取的长度(以半角计算)。 原理很简单,就是逐个遍历源串中的字符,如果该字符是全角,则认为它占两个长度,如果是半角,就认为它占一个长度。 public static string CutString(string inputString, int len) { string tempString = ...

lovecontry 77

如何利用PHP来截取一段中文字符串而不出现乱码

/*功能:截取全角和半角混合的字符串以避免乱码参数: $str_cut 需要截断的字符串 $length  允许字符串显示的最大长度*/function substr_cut($str_cut,$length = 30){  if (strlen($str_cut) >; $length){  for($i=0; $i < $length; $i++)

hexiankun的专栏 772

VB按字节截取字符串

内容绝大部分来自互联网,出处请百度。 全角半角皆适用 1 Public Function bSubstring(ByVal s As String, ByVal length As Integer) As String 2 Dim bytes As Byte() = Text.Encoding.Unicode.GetBytes(s) 3 ...

weixin_34198881的博客 509

【Android】全角字符半角字符工具类

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34010949的博客 321

js中按字节截取字符串

功能:在网页中显示过长的字符串,截取指定长度,结尾添加省略号。 例如: testStr = "测试1字符串"; autoAddEllipsis(testStr, 1); // "测..." autoAddEllipsis(testStr, 2); // "测..." autoAddEllipsis(testStr, 3); // "测..." autoAddEllipsis(tes...

tjmljw的专栏 448

java下取得字符串像素宽度例子_JAVA下取得字符串像素宽度例子

我们通常要对字符串进行截取,以保证在画面上显示不全的地方Layout整齐划一,Web画面中尤其如此。但由于全角、半角、字符宽度不同而导致使用普通的substring()方法并不能满足要求。所以,就google一下,参考了各种资料后,做了如下例子。// 英文字体使用Arial,普通模式,大小12(单位是磅,中文中的“一号”,“二号”等这样的分类不支持。)private static Font f =...

weixin_36259438的博客 206

c# 判断字符是否是全角, 获取字符串的字节数 , 获取字符串指定长度字节数的字符串...

1 Encoding.Default.GetByteCount(checkString);  =2 全角 =1 半角 /// &lt;summary&gt; /// 获取字符串的字节长度 /// &lt;/summary&gt; /// &lt;param name="str"&gt;&lt;/param&gt; ...

weixin_33918114的博客 277
上一篇: Java 按指定长度截取字符串,考虑全角半角
下一篇: JS ==和===运算符的比较
TpingSpace
博客等级 码龄15年 1粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值