标题:【求助】输入abcs557898,怎么截取557898?
只看楼主
xiaxun
Rank: 1
等 级:新手上路
帖 子:207
专家分:7
注 册:2009-8-30
得分:0 
textBox1.Text
textBox2.Text

怎么有两个东西呀
2010-09-01 16:08
野比
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:1627
专家分:516
注 册:2007-5-24
得分:0 
小哥你还没弄明白啊。。。
建议你在纸上画一下,不要光在电脑上空想。。
帮你详细的写下,再不明白建议你去【当面】请教老师:

比如你的输入内容为input(string类型,可以是自己弄的某个变量,也可以是TextBox.Text文本框的Text属性)。
我先做两个指针count、offset(都是int类型的变量)
count用来储存字符串总长度(包含多少个字符)
offset用来储存位置的偏移量(位置指针,表示当前处理到第几个字符了)
下面是代码
程序代码:
//假设 input 输入的字符串为 "abcs557898"
//那么需要截取出来的就是 "557898"
count = input.Length;    //储存输入的字符串总长度,等于 10
if(count < 6)    //输入长度不够 6 个,直接退出
    return null;
else{
    //输入长度超过6个,开始从末尾往前找出数字来
    string temp = "      ";    //新建个临时字符串用来存放找出来的数据,其内容为 6 个空格
    offset = 6 - 1;    //偏移指针指向临时字符串的最后一位
    for(int i = count - 1; i > -1; i = i - 1){
        //从 input 字符串末尾往前数。count - 1 = 9,即从最后一个字符 8 开始。
        if(char.IsDigit(input[i])){    //判断当前字符是否为数字0-9。这里如果加上 "|| input[i] == '.'" 就可以支持小数点了
            //是数字,添加到临时字符串中(由偏移指针决定插入位置)
            temp[offset] = input[i];
            //偏移指针前移
            offset = offset - 1;
            if(offset < 0){
                //判断,如果偏移到了 -1,说明 temp 的 6 位数已经填满了,可以直接进入下一步
                break;    //退出 for 循环
            }
        }
        else{
            //如果 input[i] 不是数字,则表示无数字可填,同样,退出 for
            break;
        }
    }
   
    //for 循环完成后,temp 中存放的是“557898”,这是我们想要的。
    //但是如果输入的数字位数不够 6 位,比如“abcs123”,那么会因为 input[i]不是数字而中途退出 for,
    //此时 temp 中存放的是“   123”,3 个空格加“123”
    //需要去掉可能的空格。“123456”处理后仍是“123456”;“   123”空格加 123 处理后,则变成“123”
    //如果只能输入标准的 6 位数,那么显然“123”是错误的
    //比较处理前和处理后的字符串长度,如果不相等,说明不是 6 位,报错
    if(temp.Length != temp.Trim().Length){
        return null;
    }
    else{
        //相等,说明 temp 是我们要的,
        return temp;
        //打完收工
    }
}


[ 本帖最后由 野比 于 2010-9-1 17:53 编辑 ]

女侠,约吗?
2010-09-01 17:52
xiaxun
Rank: 1
等 级:新手上路
帖 子:207
专家分:7
注 册:2009-8-30
得分:0 
这么长

好复杂!!

帮我解决那个音乐问题呀
2010-09-01 18:38
liubaoen
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:104
专家分:117
注 册:2006-6-12
得分:0 
凡是匹配的问题就找正则表达式,自己到网上查资料。
2010-09-05 18:51
高小
Rank: 1
等 级:新手上路
帖 子:45
专家分:0
注 册:2010-6-30
得分:0 
回复 楼主 xiaxun
用这个试试 text1.text.substring(3,9) 从第四个数到最后一个数
2010-09-06 09:15
ht_xusz
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-9-6
得分:0 
.IsNumber  是什么意思啊?
2010-09-06 10:57
c1_wangyf
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:7
帖 子:665
专家分:2832
注 册:2010-5-24
得分:0 
看你,哎....,看看这个吧,可以完全复制下来到VS2008中运行一下,别忘了在窗体上放上textbox和commandbuttom啊?!

using System;
using System.Collections.Generic;
using
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;

using System.Windows.Forms;

namespace number
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private string getnumber(string input)
        {
            int count;
            int offset=0;
            string returnstr="";
            count = input.Length;
            for(int i=1;i<=count;i++)
            {
                string testNo=input.Substring(count-i,1) ;
                try
                {
                    if (int.Parse(testNo) <= 9 && int.Parse(testNo) >= 0)
                    {
                        offset = offset + 1;
                    }
                    else
                    {
                        break;
                    }

                }
                catch(Exception ex)
                {
                    break;
                }
            }
                if (offset >= 6)
                {
                    returnstr = input.Substring(count - 6, 6);
                }
                else
                {
                    MessageBox.Show("数据不足!", "Tips", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    returnstr = "";
                }
            
            return returnstr;
        }
   
        
        private void button1_Click(object sender, EventArgs e)
        {
            string input = textBox1.Text;
            
             string number=getnumber(input);//这就是你需要的最后面的数字的字符表示
            
        }
    }
}
2010-09-08 16:27
何事惊慌
Rank: 6Rank: 6
等 级:侠之大者
威 望:4
帖 子:220
专家分:499
注 册:2008-7-2
得分:0 
其实野比的是最方便的方案,就是不知道那个效率高。。呵呵,这样的其实也无所谓了

QQ:860234001
编程交流群:236949758
2010-09-10 22:19



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-317121-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.152111 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved