控制输出字符串的长度,可以区别中英文(转)

本文分享了一种控制输出文章标题中中英文字符长度的方法,通过自定义函数实现了精确的长度控制,适用于需要统一标题显示长度的场景。
研究了2小时怎么控制输出文章标题中的中英文,给大家铁出来
函数在下面,是方法是:
strvalue("复请Email通知如果不填写则取注册Email",26)
这里26是指26个英文字母,也就是13个汉字


function strlen(str)
dim p_len
p_len=0
strlen=0
if trim(str)<>"" then
p_len=len(trim(str))
for xx=1 to p_len
if asc(mid(str,xx,1))<0 then
strlen=int(strlen) + 2
else
strlen=int(strlen) + 1
end if
next
end if
end function

function strvalue(str,lennum)
dim p_num
dim i
if strlen(str)<=lennum then
strvalue=str
else
p_num=0
x=0
do while not p_num > lennum-2
x=x+1
if asc(mid(str,x,1))<0 then
p_num=int(p_num) + 2
else
p_num=int(p_num) + 1
end if
strvalue=left(trim(str),x)&"…"
loop
end if
end function


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10294527/viewspace-124742/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10294527/viewspace-124742/

在 C# 中,获取字符串长度的最常用方法是使用 `Length` 属性。该属性返回字符串中字符的数量,无论字符是单字节字符(如英文字母、数字、符号)还是多字节字符(如中文字符),每个字符均计为一个长度单位[^2]。 ### 示例代码 ```csharp string str = "字符串长度测试12345+-=@#"; int length = str.Length; Console.WriteLine("字符串长度为:" + length); ``` 上述代码中,`str.Length` 返回字符串 `str` 的字符总数,输出结果为: ``` 字符串长度为:19 ``` ### 与其他长度相关的操作 若需要获取字符串在特定编码下的字节长度,例如在默认编码或 UTF-8 编码下的字节长度,可使用 `Encoding` 类的 `GetByteCount` 方法。该方法返回字符串在指定编码格式下的字节数: - **默认编码(如 GB2312)**:中文字符通常占 2 个字节,其他字符占 1 个字节。 - **UTF-8 编码**:中文字符通常占 3 个字节,其他字符占 1 个字节[^2]。 #### 示例代码:获取字节长度 ```csharp string str = "字符串长度测试12345+-=@#"; int defaultByteCount = System.Text.Encoding.Default.GetByteCount(str); int utf8ByteCount = System.Text.Encoding.UTF8.GetByteCount(str); Console.WriteLine("默认编码下的字节长度:" + defaultByteCount); Console.WriteLine("UTF-8编码下的字节长度:" + utf8ByteCount); ``` ### 字符串截取与省略号处理 在某些场景下,可能需要根据指定长度截取字符串,并在截断时添加省略号(...)。以下是一个通用的字符串截取方法,支持按字符长度截取并决定是否添加省略号[^3]: ```csharp public static string LeftStr(string p_StrValue, int p_StrLen, bool p_HavePoints) { string m_NewStr = ""; int m_Num = 0; for (int i = 0; i < p_StrValue.Length; i++) { char c = Convert.ToChar(p_StrValue.Substring(i, 1)); if (((int)c > 255) || ((int)c < 0)) { m_Num += 2; } else { m_Num += 1; } if (m_Num >= p_StrLen) { m_NewStr = p_StrValue.Substring(0, i + 1); if (p_HavePoints && i < p_StrValue.Length) { m_NewStr += "..."; } break; } } return m_NewStr; } ``` ### 字符串查找与索引 C# 中的字符串查找方法包括 `IndexOf` 和 `LastIndexOf`。`IndexOf` 返回指定字符或子字符串在原字符串中第一次出现的位置,而 `LastIndexOf` 返回最后一次出现的位置[^4]。 #### 示例代码:字符串查找 ```csharp string str = "Hello, world!"; int firstIndex = str.IndexOf("o"); // 返回 4 int lastIndex = str.LastIndexOf("o"); // 返回 8 ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值