我很急啊

解决方案 »

  1.   

    C#中,char类型是占两个字节,所以不用担心中英文混合,一个中文算一个,一个英文也算一个。"中文AC".Length == 4;
      

  2.   


    //短信分页,140个字符,70个汉字
    while(strtx.Length>70)
    {               
      strsms=strtx.Substring(0,70);
      strtx=strtx.Substring(70,strtx.Length - 70);
      //短信发送}
    if (strtx.Length>0)
    {
        //短信发送
    }
      

  3.   

    public ArrayList Split(string s)
    {
    ArrayList result = new ArrayList();
    if (s.Length <= 70)
    result.Add(result);
    else
    {
    System.Text.StringBuilder temp = new System.Text.StringBuilder();
    int i = 0;
    foreach (char c in s)
    {
    if ((int)c > 127)
    {
                            i += 2;
    if (i < 141)
    temp.Append(c);
    else
    {
    i = 2;
    result.Add(temp.ToString());
    temp.Length = 0;
    temp.Append(c);
    }
    }
    else
    {
    i += 1;
    if (i < 141)
    temp.Append(c);
    else
    {
    i = 1;
    result.Add(temp.ToString());
    temp.Length = 0;
    temp.Append(c);
    }
    }
    }
    }
    return result;
    }
      

  4.   

    统一编码为UNICODE,否则会出现乱码;无论中英文都是16b
    至少我接触的设备是这样的
      

  5.   

    我已经写出来了
    private string CutChinese(string str,int standlen)
    {
    string ret="";
    int bytecount=0;
    for(int i=0;i<str.Length;i++)
    {
    byte[] bytes = Encoding.Default.GetBytes(str.Substring(i,1));
    if(bytes.Length==2)
    {
    bytecount+=2;
    if (bytecount<=standlen)
    {
    ret+=str.Substring(i,1);
    }
    else
    {
    return ret; }
    }
    else
    {
    bytecount++;
    if (bytecount<=standlen)
    {
    ret+=str.Substring(i,1);
    }
    else
    {
    return ret; }
    } }

    return ret;


    } string s="f1地方3$^fdsf反对感gg广泛大使馆的gggggggg";
    do
    {   string temp=this.CutChinese(s,6);
    this.listBox1.Items.Add(temp);
    s=s.Substring(temp.Length);
    }while(s.Length>0);
      

  6.   

    试试/// <summary>
    /// 返回定制字节数的字符串
    /// </summary> 
    /// <param name = "p_str"> 输入字符串 </param>
    /// <param name = "p_intN"> 定制字节数 </param>
    /// <returns> Returns:返回定制字节数的字符串 </returns>
    public static string GetCustomBtyeString(string p_str, int p_intN)
    {
        int intN = 0;
        int intIndex = 0;    foreach (char charTemp in p_str.ToCharArray())
        {
            if (Regex.IsMatch(charTemp.ToString(), @"[^\x00-\xff]"))//是否匹配双字节
            {
                intN++;
                if (intN == p_intN)
                {
                    p_str = p_str.Substring(0, intIndex);
                    break;
                }
            }
            intN++;
            if (intN == p_intN)
            {
                p_str = p_str.Substring(0, intIndex + 1);
                break;
            }
            intIndex++;
        }    return p_str;
    }