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

本文介绍了一个用于字符串截取的公共函数,该函数能够根据指定长度截取字符串,并考虑了ASCII编码下不同字符的长度差异。同时,在截断后会适当添加省略号以指示原始字符串已被截短。
#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

 

注:ASCIIEncoding 在system.text;

<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个字符)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值