有20个像素的宽度的div,我想显示一段文字,如果超出20个像素就截取适当的文字追加"..."

进入梦时才浪漫 2011-01-10 11:15:30
有20个像素的宽度div,我想显示一段文字,如果超出20个像素就截取适当的文字追加"..."
文字可能是汉字,英文小写或英文大写字母,三种情况的文字所占的空间(像素)都是不是样的,那么怎么才能做到刚好20个像素就截取呢,请高手指教...
...全文
171 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
koukoujiayi 2011-01-10
  • 打赏
  • 举报
回复
css也可以:
<div style="width: 20px; height: 20px; border: 1px solid blue; overflow: hidden; text-overflow:ellipsis">dcsd sdjhf sdhfl jsdhljaf h</div>
baysos 2011-01-10
  • 打赏
  • 举报
回复
function cutstr(str,len)
{
var str_length = 0;
var str_len = 0;
str_cut = new String();
str_len = str.length;
for(var i = 0;i<str_len;i++)
{
a = str.charAt(i);
str_length++;
if(escape(a).length > 4)
{
//中文字符的长度经编码之后大于4
str_length++;
}
str_cut = str_cut.concat(a);
if(str_length>=len)
{
str_cut = str_cut.concat("...");
return str_cut;
}
}
//如果给定字符串小于指定长度,则返回源字符串;
if(str_length<len){
return str;
}
}

试试
  • 打赏
  • 举报
回复
不好意思,我想用Js的方法来实现,请问怎么解决
wuyq11 2011-01-10
  • 打赏
  • 举报
回复
Encoding.Default.GetString(Encoding.Default.GetBytes(str), 0, 24)
public static string GetFirstString(string stringToSub, int length)
{
Regex regex = new Regex("[\u4e00-\u9fa5]+", RegexOptions.Compiled);
char[] stringChar = stringToSub.ToCharArray();
StringBuilder sb = new StringBuilder();
int nLength = 0;
bool isCut=false;
for(int i = 0; i < stringChar.Length; i++)
{
if (regex.IsMatch((stringChar[i]).ToString()))
{
sb.Append(stringChar[i]);
nLength += 2;
}
else
{
sb.Append(stringChar[i]);
nLength = nLength + 1;
}

if (nLength > length)
{
isCut=true;
break;
}
}
if(isCut)
return sb.ToString()+"..";
else
return sb.ToString();
}
baysos 2011-01-10
  • 打赏
  • 举报
回复
css控制,不过貌似FF支持的不好·也可以用代码试试,先算好20个像素大概占多少字符
//返回指定字符长度的字符串
private string returnByte(string input, int len)
{
input = input.Trim();
byte[] myByte = System.Text.Encoding.Default.GetBytes(input);
if (myByte.Length > len)
{
//截取
string resultStr = "";
for (int i = 0; i < input.Length; i++)
{
byte[] tempByte = System.Text.Encoding.Default.GetBytes(resultStr);
if (tempByte.Length < len)
{
resultStr += input.Substring(i, 1);
}
else
{
break;
}
}
return resultStr + "...";
}
else
{
return input;
}
}
chen_ya_ping 2011-01-10
  • 打赏
  • 举报
回复
[Quote=引用楼主 yanglong925319 的回复:]
有20个像素的宽度div,我想显示一段文字,如果超出20个像素就截取适当的文字追加"..."
文字可能是汉字,英文小写或英文大写字母,三种情况的文字所占的空间(像素)都是不是样的,那么怎么才能做到刚好20个像素就截取呢,请高手指教...
[/Quote]
你的这个要求是不是不管英文还是中文都显示20个字呢
newdigitime 2011-01-10
  • 打赏
  • 举报
回复
20个像素宽? 也就只能显示一个字符 ,你把"..."显示在哪儿
zhxhdean 2011-01-10
  • 打赏
  • 举报
回复
楼上的办法好

62,254

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧