当前位置:编程学习 > C#/ASP.NET >>

新人问个超简单的问题,大家帮帮吗啊


                            body = ReceiveSmsStr.Substring(0, ReceiveSmsStr.IndexOf("#"));
                            ReceiveSmsStr = ReceiveSmsStr.Substring(ReceiveSmsStr.IndexOf("#") + 1);
                            time = ReceiveSmsStr.Substring(0, ReceiveSmsStr.IndexOf("|"));
                            ReceiveSmsStr = ReceiveSmsStr.Substring(ReceiveSmsStr.IndexOf("|"));

                            ss = body.Substring(3, 3);
                            if (ss == "dt")
                            {
                                MessageBox.Show(ss);
                            }

                            else
                            {
                                MessageBox.Show("有错?"); 
                                MessageBox.Show(ss);
                            }



这段代码有两给疑问,1.ss = body.Substring(3, 3);这句,从第三个字符开始,我想截取前两个字"dt",但是如果 body.Substring(3, 2);的话得到的值是"d",只有写成3,3  得到的值才是“dt”
                    2.取得值dt后,if (ss == "dt")这句执行结果却是两个值不相等,请问这是什么问题啊?  有空格? 空格怎么去除啊?新手不知道trim的格式怎么写。 或者是类型不对? 怎么转换呢?

请大家帮帮我 --------------------编程问答-------------------- trim()就是去掉头部和尾部空格,然后就可以了
sigh,看看msdn嘛 --------------------编程问答-------------------- substring(int i ,int k) 检索子字符串。子字符串从指定的字符位置i开始且具有指定的长度k。
所以你如果k=3的话,一定是截取了3个字符,显示成dt,可能是其中有转义字符,实际上并不是dt。

第二个问题就是因为第一个表面上显示dt,但实际上不是dt。

--------------------编程问答-------------------- --------------------编程问答-------------------- substring(int i ,int k) 检索子字符串。子字符串从指定的字符位置i开始且具有指定的长度k。
--------------------编程问答-------------------- ss.trim() --------------------编程问答-------------------- 如果不是转义字符而是空格引起的,用下面的语句:
ss = body.Trim().Substring(3, 2);
Tirm()先去掉两边的空格,然后求子串
--------------------编程问答-------------------- (3,2)应该是对的。可能d前面有个空格。 --------------------编程问答--------------------
引用 6 楼 zengguoyu 的回复:
如果不是转义字符而是空格引起的,用下面的语句:
ss = body.Trim().Substring(3, 2);
Tirm()先去掉两边的空格,然后求子串
+1. --------------------编程问答-------------------- 一般对字符串处理都要先去掉空格! --------------------编程问答-------------------- 跟一下就知道了 --------------------编程问答-------------------- ss = body.Substring(4, 2)
不就行了 --------------------编程问答-------------------- ss.Equals("dt"),用equals相比较才是比较两个的值 --------------------编程问答-------------------- 用trim不行,还是两值不匹配,用ss = body.Substring(4, 2),倒是匹配了,可是报错,其中的217行 就是  ss = body.Substring(4, 2)。
See the end of this message for details on invoking 
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.ArgumentOutOfRangeException: Index and length must refer to a location within the string.
Parameter name: length
   at System.String.InternalSubStringWithChecks(Int32 startIndex, Int32 length, Boolean fAlwaysCopy)
   at System.String.Substring(Int32 startIndex, Int32 length)
   at war_tools.Form1.timer1_Elapsed(Object sender, ElapsedEventArgs e) in D:\短信平台-最新\sms\Form1.cs:line 217
--------------------编程问答-------------------- 如果还是不对,个人感觉应该不是空格的问题,有可能是转义字符的问题

ss = body.Trim().Substring(3, 2);这里面的Trim用法、SubString用法都没问题的

建议LZ跟一下代码,看看Substring(3, 1)和Substring(3, 2)分别是什么 --------------------编程问答-------------------- 看来是飞信的问题,用手机直接发送短信的话,就可以截取到dt,如果用飞信发的话,比如接收到得内容是:张三: dtajgg,d前面就会有个空格,所以应该是从第四个字符开始,但是为什么用 ss = body.Substring(4, 2),又会报13楼的错误呢 --------------------编程问答-------------------- 谁来帮帮我
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,