CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  ASP.NET

关于字符串的截取问题,在线等...

楼主sportboy51()2006-07-04 11:29:34 在 .NET技术 / ASP.NET 提问

例如象手机短信那样,当一条短信的内容太长了,首先要截取一段发出,再接下来发。假设手机短信每一次最大能发40个汉字,这条短信的内容很长,要分段的发送。用substring这个函数会出错,因为在截取的时候,有时候会出现值超出范围。短信的长度是变化的。那位朋友告诉我一下,如何实现。。 问题点数:50、回复次数:9Top

1 楼wwfy(我舞飞扬)回复于 2006-07-04 11:31:37 得分 0

先判断有多么长,看看能截断几次。最后一次注意一下参数值。Top

2 楼7707(kingfisher)回复于 2006-07-04 11:32:19 得分 0

有时候会出现值超出范围。  
  -------  
   
  先判断长度再截取.   if(str.length>80){substring.....Top

3 楼celas(长刀公主)回复于 2006-07-04 11:33:09 得分 5

给你两个函数:  
   
          public   static   string   Substr(string   input,   int   start)   {  
              if   (input   ==   null   ||   Math.Abs(start)   >   input.Length)   {  
                  return   null;  
              }   else   if   (start   <   0)   {  
                  return   input.Substring(Math.Max(0,   input.Length   +   start));  
              }   else   {  
                  return   input.Substring(start);  
              }  
          }  
   
          public   static   string   Substr(string   input,   int   start,   int   len)   {  
              if   (input   ==   null   ||   Math.Abs(start)   >   input.Length   ||   len   <   0)   {  
                  return   null;  
              }   else   if   (start   <   0)   {  
                  return   input.Substring(Math.Max(0,   input.Length   +   start),   Math.Min(Math.Abs(start),   len));  
              }   else   {  
                  return   input.Substring(start,   Math.Min(input.Length   -   start,   len));  
              }  
          }Top

4 楼celas(长刀公主)回复于 2006-07-04 11:42:29 得分 0

上面两个函数是我参照   PHP   的处理逻辑写的.   给出使用例子:  
   
  string   x   =   "12345";  
  Substr(x,   0);   //   y   值为   "12345"  
  Substr(x,   -1);   //   y   值为   "1234"  
  Substr(x,   100);   //   y   值为   null  
   
  第二个函数类似,   但加入了长度参数.  
   
  ===============================  
   
  同时会   .NET   和   PHP   的都知道,    
   
  .NET   的   Substring()   函数使用极其不便,   输入的参数必须在限定范围内才能得出结果,   否则异常.  
   
  而   PHP   的   substr()   就比较人性化,   他会尽量截取有意义的那部分,   输入的参数甚至可以是负数,   非常体贴.  
  Top

5 楼celas(长刀公主)回复于 2006-07-04 11:46:48 得分 0

楼上的例子有些笔误,   补全:  
   
  string   x   =   "12345";  
  string   y   =   null;  
   
  y   =   Substr(x,   0);   //   y   值为   "12345"  
  y   =   Substr(x,   -1);   //   y   值为   "1234"  
  y   =   Substr(x,   100);   //   y   值为   null  
  y   =   Substr(x,   0,   2);   //   y   值为   "12"  
  y   =   Substr(x,   0,   -1);   //   y   值为   null;   (这里和   PHP   不同,   PHP   会截取负长度,   个人感觉该方式逻辑比较混乱)  
  y   =   Substr(x,   -4,   2);   //   y   值为   "23"Top

6 楼sportboy51()回复于 2006-07-04 12:06:44 得分 0

怎么都没有用到for循环的  
  Top

7 楼celas(长刀公主)回复于 2006-07-04 12:28:19 得分 0

为什么要用   forTop

8 楼sportboy51()回复于 2006-07-04 12:39:39 得分 0

作判断阿,假设我这条短信125个汉字,最少要发4次,所以用for循环进行发送Top

9 楼kssys()回复于 2006-07-04 13:00:16 得分 45

int   iCurPos   =   0;  
                          int   iMaxSendLength   =   20;  
                          string   strSendText   =   "axckdsafl;sajfsa;fjdsa;jfsa;fjsa;fjskrjqp8u-4327fsaf-82-41";  
   
                          while   (iCurPos   <   strSendText.Length)  
                          {  
    string   strCurSendText;  
    if   (iCurPos   +   iMaxSendLength   <   strSendText.Length)  
      strCurSendText   =   strSendText.Substring(iCurPos,   iMaxSendLength);  
    else  
      strCurSendText   =   strSendText.Substring(iCurPos,   strSendText.Length   -   iCurPos);  
   
      //发送资料  
      //休息一会  
    System.Threading.Thread.Sleep(500);  
   
    iCurPos   +=   iMaxSendLength;  
                          }Top

相关问题

关键词

得分解答快速导航

  • 帖主:sportboy51
  • celas
  • kssys

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo