C#实现 获取指定字节长度 中英文混合字符串 的方法

C#截取中英文混合指定长度字符串实例 主要介绍了C#截取中英文混合指定长度字符串,大家参考使用 立即下载
C#实现 获取指定字节长度 中英文混合字符串 的方法

平时在作数据库插入操作时,如果用 INSERT 语句向一个varchar型字段插入内容时,有时会因为插入的内容长度超出规定的长度而报错。尤其是插入中英文混合字符串时,SQL Server中一般中文要占两个字节,所以对混合型的字符串就要作一个处理,统一按字节长度来计算字符串长度,方法如下:
  /// <summary>
  /// 获取指定字节长度的中英文混合字符串
  /// </summary>
  private string GetString(string str, int len)
  {
   string result = string.Empty;// 最终返回的结果
   int byteLen = System.Text.Encoding.Default.GetByteCount(str);// 单字节字符长度
   int charLen = str.Length;// 把字符平等对待时的字符串长度
   int byteCount = 0;// 记录读取进度
   int pos = 0;// 记录截取位置
   if (byteLen > len)
   {
    for (int i = 0; i < charLen; i++)
    {
     if (Convert.ToInt32(str.ToCharArray()[i]) > 255)// 按中文字符计算加2
      byteCount += 2;
     else// 按英文字符计算加1
      byteCount += 1;
     if (byteCount > len)// 超出时只记下上一个有效位置
     {
      pos = i;
      break;
     }
     else if(byteCount == len)// 记下当前位置
     {
      pos = i + 1;
      break;
     }
    }

    if(pos >= 0)
     result = str.Substring(0, pos);
   }
   else
    result = str;

   return result;
  }

超简单C#获取带汉字的字符串真实长度(单个英文长度为1,单个中文长度为2) 正常情况下,我们是直接去string的length的,但是汉字是有两个字节的,所以直接用length是错的。如下图: 所以应该用以下代码来获取长度: private void button1_Click(object sender, EventArgs e) { string s = textBox1.Text; int i = GetLength(s); MessageBox.Show(i.ToString()); } public static int GetLength(string str) { if 立即下载

相关推荐

DeepSeek-V4-Pro 正式版突袭上线:Agent 能力暴涨,DeepSWE 直接干翻 Claude Opus 4.8

8 月 12 日深夜,DeepSeek 悄悄在 API 文档里上架了一个新版本号——DeepSeek-V4-Pro-0813。第二天(13 日),这个版本被确认为 V4 Pro 正式版。没有发布会,没有预热,只改了版本号,就把整个 AI 圈的注意力又抢了过去。

2601_96613114的博客 838

使用C# 完美实现多语言版本Windows应用程序

Visual Studio 对于.NET 程序的本地化提供了完整的支持,这里仅介绍实现多语言版本本地化程序的简单步骤. 注意黑体处为关键点. 一. 窗体本地化    对于Windows 窗体,你需要做的第一步是确定你的默认界面语言,默认语言是指当执行程序无法找到已定义的本地化资源时,默认使用的语言,由于.net使用utf-8作为默认编码,一般情况下在任何语言的系统上都能正常显示. 本地化窗

yw1688的专栏 2836

TI毫米波雷达人体生命体征(呼吸、心跳)信号提取算法(IWR6843ISK+DCA1000EVM)

本篇内容介绍的算法主要为传统的提取算法,但可实现在1m内呈现良好的检测效果,能够提取出非常可观的呼吸和心跳波形,但在超出1m的距离后便不适用这个算法了。远距离检测呼吸和心跳始终是这个领域一个很大的挑战。要实现远距离检测可在提取相位信号、分离呼吸和心跳信号上进行改进处理,例如线性解调提取相位、改进的VMD分离呼吸和心跳算法。

m0_61934621的博客 3万+

C# socket 接收和发送 带中文的消息

我们经常使用socket进行字符串收发。如果发送内容中包括中文,需要注意特殊写法。 //1.发送含中文消息 string strMsg = "你好,欢迎上线"; byte[] buffer = new byte[2048]; buffer = Encoding.Default.GetBytes(strMsg); clientSocket.Send(buffer); //2 接收含中文消息 byte[] clientData = new byte[2048]; int i_receiveLen

wangjijun0807的专栏 2544

一个固定翼飞机仿真程序带你系统性上手如何实现配平(工具箱+脚本)

老规矩,该博客所用的模型和脚本已上传至百度网盘,名字为“固定翼配平训练例子”,自己自取。

zouxu634866的博客 2567

从OFED到rdma-core:手把手带你搞定Linux下RDMA开发环境的选型与搭建

本文详细介绍了在Linux系统下搭建RDMA开发环境的完整流程,涵盖OFED与rdma-core的选型对比及分步安装指南。针对高性能计算和分布式存储需求,解析RDMA技术栈的核心组件,提供环境验证与性能测试方法,帮助开发者快速构建稳定高效的开发环境。特别适合需要优化网络性能的工程师参考。

weixin_26905487的博客 225

C#统计中英文混排字符串的长度

public int StrLength(string str)    {        int len = 0;        for (int i = 0; i         {            byte[] byte_len = System.Text.Encoding.Default.GetBytes(str.Substring(i, 1));            if (byt

1709

智能手环心率检测不准?用STM32+MAX30102教你实现医疗级精度(含算法优化)

本文详细解析了如何利用STM32微控制器和MAX30102光学传感器实现医疗级精度的心率检测方案。通过硬件参数调校、ADC采集优化、运动伪影消除及深度学习算法改进,显著提升智能手环在静态和运动状态下的检测精度,误差可控制在±1.5bpm以内,满足医疗电子标准。

weixin_28335283的博客 525

英文系统下传输中文字符的问题!

1. 首先大家都知道,在英文系统下,是无法识别中文文件夹下的东西。如把安装包放在中文文件夹下,然后点击安装程序,是无法执行的。 2. 在中文系统下传输中文字符是没有问题的。     一般网络传输都用的是需要把字符转换成bytes:  byte[] temparray =  Sys

野百合的专栏 1320

keil内无法打开ccs图形编程,弹框提示:无法加载一下来源的扩展程序:C:\...清单文件缺失或不可读取,如何解决?

🏆本文收录于 《全栈Bug调优(实战版)》 专栏,该专栏专注于分享我在真实项目开发中遇到的各类疑难Bug及其深层成因,并系统提供高效、可复现的解决思路和实操方案。无论你是刚入行的新手开发者,还是拥有多年项目经验的资深工程师,本专栏都将为你提供一条系统化、高质量的问题排查与优化路径,助力你加速成长,攻克技术壁垒,迈向技术价值最大化与职业发展的更高峰🚀!

**My Coding Family** 1376

uni-app - 修改默认端口,H5 项目控制台运行出来的 IP 地址的默认端口号(H5 项目运行后控制台,修改项目运行到内置浏览器默认 8080 端口号)

uni-app运行到H5修改默认端口号,uni-app如何修改默认端口,uni-app修改默认端口,uni-app本地运行修改调试已上线微信H5项目,请问在UNIAPP的H5运行调试时候的IP是否可以自己设置固定,uni-app开发环境,如何设置h5服务器的端口,uni-app如何修改默认端,uni-app修改默认端口,uni-app指定端口号,uni-app-修改H5项目控制台运行出来的IP地址的默认端口号(H5项目运行后控制台,修改项目运行到内置浏览器默认8080端口号)

🏆 前端领域优质创作者 9885

C#与JS实现 获取指定字节长度 中英文混合字符串 的方法

平时在作数据库插入操作时,如果用 INSERT 语句向一个varchar型字段插入内容时,有时会因为插入的内容长度超出规定的长度而报错。 尤其是插入中英文混合字符串时,SQL Server中一般中文要占两个字节,所以对混合型的字符串就要作一个处理,统一按字节长度来计算字符串长度,方法如下: C#方法一: public static string GetString(string s...

weixin_30641999的博客 144

嵌入式面经篇八——进程&线程

记录一些招聘公司在招聘嵌入式软件岗位时的一些问题,此文为第八篇。进程上文:是指进程由用户态切换到内核态时需要保存用户态时CPU寄存器中的值,进程状态以及堆栈上的内容。即保存当前进程的状态,以便再次执行该进程时,能够恢复切换时的状态,继续执行。进程下文:是指切换到内核态后执行的程序,即进程运行在内核空间的部分。中断上文:硬件通过中断触发信号,导致内核调用中断处理程序,进入内核空间。这个过程中,硬件的一些变量和参数也要传递给内核,内核通过这些参数进行中断处理。

明天你好的博客 1854

C#中英文混合字符串截取指定长度

///         /// C#中英文混合字符串截取指定长度        /// 注:英文为一个字符,中文算两个字符        ///        /// 原始字符串        /// 长度[小等于0返回全部]        /// 省略号(可为空)        ///        public static string GetSubStr(string

wjbaiverson的专栏 1145

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

C#截取指定长度中英文字符串方法

用C#写的字符串截取函数public string CutStr(string sInString,int iCutLength){    if(sInString==null || sInString.Length==0 || iCutLength    int iCount=System.Text.Encoding.GetEncoding("Shift_JIS").GetByteCount

jiangxinyu的专栏 5288

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

用C#截取指定长度的中英文混合字符串

用C#截取指定长度的中英文混合字符串 我们常做的一件事情,就是在文章系统中,截取一定长度的文章标题,超过指定长度,就加“...”如两个字符串:string str1 = "中国人要啊abc呀~";string str2 = "1中国人23456abc呀~";要截取后,输出:str1 = "中国人要...";str2 = "1中国人2...";即要把中英文混合的字符串,在截取后,长度要一致,即8

成功的心 Blog 704

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

C#获取中英文混排字符串的实际长度(字节数)

/// <summary>//转载:www.uzhanbao.com /// 获取中英文混排字符串的实际长度(字节数) /// </summary> /// <param name="str">要获取长度的字符串</param> /// <returns>字符...

网络Online 896
上一篇: [转]web.config保护连接字符串及其它设置信息
下一篇: [转]ASP.NET的错误处理机制
msikruby
博客等级 码龄19年 11粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值