字符串截取固定长度的方法

博客展示了一个C#的字符串截取函数CutString。该函数接收输入字符串和截取长度,通过ASCII编码判断字符长度,循环处理字符串,若截取后长度超过指定值则添加省略号,最终返回截取后的字符串。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这个函数也没有什么特别之处,就是可以截取一定长度的字符串,可能小特点就是len是字节,解决了汉字与英文字节不一样导致直接截取到的长度不一样的问题,

#region 字符串截取函数
public static string CutString(string inputString,int len)
{

ASCIIEncoding ascii = new ASCIIEncoding();
int tempLen=0;
string tempString="";
byte[] s = ascii.GetBytes(inputString);
for(int i=0;i<s.Length;i++)
{
if((int)s[i]==63)
{
tempLen+=2;
}
else
{
tempLen+=1;
}

try
{
tempString+=inputString.Substring(i,1);
}
catch
{
break;
}

if(tempLen>len)
break;
}
//如果截过则加上半个省略号
byte[] mybyte=System.Text.Encoding.Default.GetBytes(inputString);
if(mybyte.Length>len)
tempString+="…";

return tempString;
}
#endregion

<think>好的,我现在需要帮助用户解决在WPS中截取字符串固定长度的问题。用户之前已经询问过如何截取前11个字符,现在进一步想了解更通用的固定长度截取方法。 首先,回顾之前的对话,用户已经掌握了LEFT和MID函数的基本用法,但这次可能需要更全面的指导。需要确保回答覆盖不同位置的截取,比如左侧、中间、右侧,以及可能的特殊情况处理。 接下来,查看用户提供的引用内容。引用1提到LEN和FIND函数结合使用来截取中间内容,引用2和3详细介绍了RIGHT、MID以及SUBSTITUTE函数的应用。引用4则展示了如何通过替换和计算长度来统计特定字符,这可能对处理复杂情况有帮助。 用户的需求是“查找WPS中用于字符串截取固定长度的公式”,所以需要整理所有相关的函数,并给出具体示例。同时,用户可能希望了解不同函数的适用场景,比如什么时候用LEFT,什么时候用MID或RIGHT,以及如何处理动态长度或特定分隔符的情况。 需要考虑到用户可能遇到的常见问题,例如字符串长度不足时的处理、动态调整截取位置、或者结合其他函数实现更复杂的截取。例如,引用3中的例子用SUBSTITUTE和MID拆分单元格内容,这可能对用户有启发,但需要判断是否相关。 另外,用户之前的问题涉及截取前11个字符,现在扩展到固定长度,可能需要强调函数的参数调整,比如LEFT的第二个参数,MID的起始位置和长度,RIGHT的第二个参数。同时,注意事项部分要提醒用户原字符串长度不足时的表现,以及公式的动态更新特性。 最后,生成相关问题时要基于用户可能深入的需求,比如处理动态位置、特定符号之间截取,或者结合其他函数的高级用法。确保问题覆盖用户可能遇到的后续疑问,帮助他们进一步学习。</think>### WPS表格字符串截取固定长度公式详解 #### 一、基础函数组 根据WPS官方函数库和实际应用场景,字符串截取固定长度主要使用以下三个核心函数: 1. **`LEFT(text, num_chars)`** 截取字符串左侧固定长度 示例:`=LEFT("ABCDE12345",5)` → `"ABCDE"`[^2] 2. **`MID(text, start_num, num_chars)`** 从任意位置截取指定长度 示例:`=MID("ABCDE12345",3,4)` → `"CDE1"`[^3] 3. **`RIGHT(text, num_chars)`** 截取字符串右侧固定长度 示例:`=RIGHT("ABCDE12345",5)` → `"12345"`[^2] #### 二、动态长度截取技巧 当需要根据条件动态调整截取长度时,可结合`LEN`函数: ```excel =LEFT(A1, LEN(A1)-3) // 截取前N-3个字符(N为总长度) =MID(A1, FIND(":",A1)+1, 5) // 定位符号后截取固定长度[^1] ``` #### 三、复合应用案例 **场景**:从"订单号:2023-WPS-001"中提取"WPS-001" ```excel =MID(A1, FIND("-",A1)+1, 7) // 输出"WPS-001" ``` *解析*: 1. `FIND("-",A1)`定位第一个横杠位置 2. `+1`跳过横杠符号 3. `7`为固定截取长度[^1][^3] #### 四、特殊处理方案 | 场景 | 公式组合 | 功能说明 | |---------------------|-----------------------------------|------------------------------| | 截取后去空格 | `=TRIM(LEFT(A1,10))` | 消除截取结果中的多余空格 | | 带条件截取 | `=IF(LEN(A1)>15,LEFT(A1,15),A1)` | 超长时截断,不足时保留原值 | | 符号间内容截取 | `=MID(A1,FIND("[",A1)+1,FIND("]",A1)-FIND("[",A1)-1)` | 提取中括号间内容[^1] | #### 五、工程级应用 **批量处理流程**: 1. 创建辅助列存储截取结果 2. 使用`=LEFT($A1,10)`锁定原始数据引用 3. 配合`CTRL+ENTER`快速填充公式 4. 通过`选择性粘贴为值`固化计算结果[^3] #### 六、性能注意事项 1. 万行级数据处理时避免嵌套过多`FIND`函数 2. 优先使用`LEFT/RIGHT`替代`MID`提升计算速度 3. 含中文时注意字符编码差异(1个汉字=1个字符)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值