永发信息网

截取字符串 所占位置固定

答案:2  悬赏:60  手机版
解决时间 2021-05-16 03:15
  • 提问者网友:人生佛魔见
  • 2021-05-15 19:09

public string s, s1;
protected void Page_Load(object sender, EventArgs e)
{
s = "dfgdg dfgdg dfgdg 美国为安抚印度%20,拟高规格接待";
s1 = "2009中网赛场内外的十大感动瞬间(图) 2009中网赛";
s = cutString(s, 38);
s1 = cutString(s1, 38);
}
public string cutString(object strInput, int len)//字符串处理英文混排固定长度截取问题
{
string str = "";
str = Convert.ToString(strInput);
str = str.Trim();
if (str == null || str.Length == 0 || len <= 0)
{
return string.Empty;
}
int l = str.Length;
int clen = 0;
while (clen < len && clen < l)
{
//每次遇到一个中文,则将该长度减一。
if ((int)str[clen] > 128) { len--; }
clen++;
}
if (clen < l)
{
return str.Substring(0, clen);
}
else
{
return str;
}
}

我想达到的效果是在页面输出时的长度相度 使界面不变形

最佳答案
  • 五星知识达人网友:过活
  • 2021-05-15 19:21

是HTML输出吗,直接用DIV在CSS样式里面固定长度。我输出新闻列表都是这样的。

全部回答
  • 1楼网友:低血压的长颈鹿
  • 2021-05-15 20:15

利用byte,中文和英文字节数可以确认的

#region 控制字符串长度 /// <summary> /// 自定义的替换超出长度字符串为"..."的方法 /// </summary> /// <param name="str">实际取出的字符串</param> /// <param name="len">规定的长度,单位为byte</param> /// <returns></returns> public static string substr(string str, int len) { //去处字符串2边的空格 str = str.Trim();

//创建一个byte数组接受转化为byte类型的字符串,因为中英文长度不同,所以统一用byte byte[] myByte = System.Text.Encoding.Default.GetBytes(str);

//如果长度超过设定的长度,截取未超出的字符串拼接"..."返回 if (myByte.Length > len) { string result = ""; for (int i = 0; i < str.Length; i++) { byte[] tempByte = System.Text.Encoding.Default.GetBytes(result); if (tempByte.Length < len) { result += str.Substring(i, 1); } else { break; } } return result + "..."; } //未超出,原样返回 else { return str; } } #endregion

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯