none
C#文本序号排序问题 RRS feed

  • 问题

  • 我想写一个可以对文本序号进行排序的工具,比如:

    1

    ddddddddd

    2

    ssssssssss

    输入11后,变成

    11

    ddddddddd

    12

    ssssssssss

    可是总调试不成功,请高手帮忙说一下,我错在哪里,还有没有更好的解决方案

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace 文本序号排序工具
    {
      class Sort
      {
        public string sort(string text,int count)    //text是要排序的文本,count是要进行重新排序的第一个序号。
        {
          string aText = "";
          string bText = "";
          bool aBool = false;
          for (int wordNumber = 0; wordNumber != text.Length; wordNumber++)
          {
            aText += text.Substring(wordNumber, 1);
            if (wordNumber == text.Length - 2)
            {
              bText = text.Substring(wordNumber + 1, 1);
            }
            else if(wordNumber==text.Length-1)
            {
              bText = "\r\n";
            }
            else
            {
              bText = text.Substring(wordNumber + 1, 2);
            }
            if (bText == "\r\n")
            {
              if (aText.Length >= 2)
              {
                if (aText.Substring(0, 2) == "\r\n")
                {
                  aText = aText.Remove(0, 2);
                }
              }
              for (int aCount=0; aCount != aText.Length; aCount++)
              {
                if (aText.Substring(aCount, 1) == "1" || aText.Substring(aCount, 1) == "2" || aText.Substring(aCount, 1) == "3" || aText.Substring(aCount, 1) == "4" || aText.Substring(aCount, 1) == "5" || aText.Substring(aCount, 1) == "6" || aText.Substring(aCount, 1) == "7" || aText.Substring(aCount, 1) == "8" || aText.Substring(aCount, 1) == "9" || aText.Substring(aCount, 1) == "0")
                {
                  aBool = true;
                }
                else
                {
                  aBool = false;
                  break;
                }
              }
              if (aBool)
              {
                text = text.Remove(wordNumber - (aText.Length - 1), aText.Length);
                text = text.Insert(wordNumber - (aText.Length - 1), count.ToString());
                count++;
              }
              aText = "";
            }
          }
          return text;
        }
      }
    }
    
    

    2011年6月30日 2:17

答案

  • using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine(sort("ssssssss\r\ndddddddd\r\naaaaaaaa", 2));
            }

            static string sort(string text, int count)
            {
                var lines = (from x in text.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries)
                       orderby x
                       let i = count++
                       select i.ToString() + " " + x).ToList();
                string s = lines.FirstOrDefault();
                foreach (var i in lines.Skip(1)) s += "\r\n" + i;
                return s;
            }

        }
    }

    2011年6月30日 14:13

全部回复

  • 你好——Xeon-J:)

    没有看懂你的意思——你是不是这样的意思呢?

    一行数字,一行文本,然后按照文本数字升序排列?


    如果你有其它意见或私下交流,请发送邮件到:maledong@qq.com;或者请讨论
    下载MSDN桌面工具(Vista,Win7)
    下载Technet桌面小工具(Vista,Win7)
    慈善点击,点击此处
    2011年6月30日 2:53
    版主
  • using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine(sort("ssssssss\r\ndddddddd\r\naaaaaaaa", 2));
            }

            static string sort(string text, int count)
            {
                var lines = (from x in text.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries)
                       orderby x
                       let i = count++
                       select i.ToString() + " " + x).ToList();
                string s = lines.FirstOrDefault();
                foreach (var i in lines.Skip(1)) s += "\r\n" + i;
                return s;
            }

        }
    }

    2011年6月30日 14:13
  • 我这个到底错在哪里
    2011年7月2日 2:36
  • 我这个到底错在哪里

    你好:)

    我们还没有了解你究竟要干什么?请详细告诉我们你要干什么啊,或者请看我的上一条回复。证实我的猜想?

    谢谢。


    如果你有其它意见或私下交流,请发送邮件到:maledong@qq.com;或者请讨论
    下载MSDN桌面工具(Vista,Win7)
    下载Technet桌面小工具(Vista,Win7)
    慈善点击,点击此处
    2011年7月2日 8:22
    版主