C#截取字符串的问题,帮忙看下。
- 提问者网友:心牵心
- 2021-05-02 08:12
{
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;
}
里面的每步意思帮忙解释一下。
- 五星知识达人网友:舍身薄凉客
- 2021-05-02 09:27
上面的很正确,补充:
if(tempLen>len)
break;
当tempLen>len时,跳出循环;
- 1楼网友:时间的尘埃
- 2021-05-02 11:58
// SubText(“abc我是小刀", 5, "...") /=abc我是...
public static string SubText(string s, int length, string ex) { if (s == null || s.Trim().Length == 0) return s; if (s.Length > length) return s.Substring(0, length) + ex; return s; }
// SubChar(“abc我是小刀", 5, "...") /=abc我...
public static string SubChar(string s, int length, string ex) { if (length <= 0) throw new ArgumentException("length"); if (s == null || s.Trim().Length == 0) return s; int index = 0; string result = ""; foreach (int c in s) { index += c >= 19968 && c <= 40869 ? 2 : 1; result += (char)c; if (index > length) return result + ex; } return result; }
- 2楼网友:神鬼未生
- 2021-05-02 10:46
- 3楼网友:执傲
- 2021-05-02 10:30
public static string CutString(string inputString,int len) { ASCIIEncoding ascii = new ASCIIEncoding();//NEW 个ASCLL键盘码 int tempLen=0;//定义一个整型 变量 默认值为 0 string tempString=""; 定义一个字符型 默认值为 空 byte[] s = ascii.GetBytes(inputString);//搞了个 byte 数组 for(int i=0;i<s.Length;i++)//循环这个数组 {if((int)s[i]==63)判断这个数组里面的 键盘 ASCII码 是否是63 ,也就是说当有人按了键盘就判断按的是否按的是63 {tempLen+=2; } else { tempLen+=1; } try {// 字符串截取,比如 字符传 "123456".Substring(0,1); 结果是1,意思是重这串字符长度索引为0开始截取1位字符 tempString+=inputString.Substring(i,1);//Substring(i,1); i 是 重这个字符串的第几个开始截取,1 就是截取多少个 } catch { break; } if(tempLen>len) break; } //如果截过则加上半个省略号 byte[] mybyte=System.Text.Encoding.Default.GetBytes(inputString);
//也是搞了个数组 if(mybyte.Length>len)//判断 这个数据的元素是否大于 len tempString+="…";//大于 len 就在 tempString +"...." return tempString;//把 tempString 值 反出来