none
数组排序 RRS feed

  • 问题

  • 我现在有一个一维字符串数组如下:

      string[] nonglidayue = new string[30] { "初一", "初二", "初三", "初四", "初五", "初六", "初七", "初八", "初九", "初十", "十一", "十二", "十三", "十四", "十五", "十六", "十七", "十八", "十九", "二十", "二十一", "二十二", "二十三", "二十四", "二十五", "二十六", "二十七", "二十八", "二十九", "三十" };

    现在给定数组中的任意一个字符串,如“十八”,我根据给定的这个字符串对nonglidayu数组进行排列,并复制给nonglidayueluoo,效果如下:

     string[] nonglidayue = new string[30] {"十八", "十九", "二十", "二十一", "二十二", "二十三", "二十四", "二十五", "二十六", "二十七", "二十八", "二十九", "三十","初一", "初二", "初三", "初四", "初五", "初六", "初七", "初八", "初九", "初十", "十一", "十二", "十三", "十四", "十五", "十六", "十七", };

    这个我要怎么才能做到?非常感谢。


    2017年12月10日 16:02

全部回复

  • 提供一个简单思路,先用IndexOf找到你需要定位的字符串的位置,比如初二的位置是1,从这个位置开始,将字符串数组后面的元素依次加入到一个队列中(List),位置结束后再多开始位置加入。


    专注于.NET ERP/CRM开发框架,C/S架构,SQL Server + ORM(LLBL Gen Pro) + Infragistics WinForms

    2017年12月11日 1:00
  • Hi,

    欢迎在MSDN论坛发帖。

    你可以先得到数组的长度,然后在得到你要的字符串在数组中位置,知道这两点,你就可以通过for 循环,把遍历出来的值放在另外一个list表里面了。

      Console.WriteLine("数组的长度为{0}", array.Length);

    如果你的问题解决了,请及时标记有用的回复作为答案,这样会帮助遇到相同问题的人。

    Best Regards,

    Hart


    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2017年12月11日 8:11
    版主
  • 我用string类的方法实现的,用Array中的FindIndex,Copy方法实现也行,效率应该会更高。

    string[] nonglidayue = new string[30]{ "初一", "初二", "初三", "初四", "初五", "初六", "初七", "初八", "初九", "初十", "十一", "十二", "十三", "十四", "十五", "十六", "十七", "十八", "十九", "二十", "二十一", "二十二", "二十三", "二十四", "二十五", "二十六", "二十七", "二十八", "二十九", "三十" };

                string days = string.Join(",", nonglidayue);
                int pos = days.IndexOf(",初三");//注意此处要查找的字符串前面要加逗号。
                string result = days.Substring(pos + 1) + "," + days.Substring(0, pos);
                nonglidayue = result.Split(',');

    用Array的话,参照Hart的思路就可以!

    2017年12月15日 6:09
  • 正常顺序定义一个枚举(enum),然后放在list或者任何支持排序的容器中,(当然,自己写排序也很简单)。需要字面值的时候就用ToString或者调用Enum.GetName,问题就都解决了。
    2017年12月18日 1:27
  • 谢谢你的回答,但是我还是不能实现,能不能就这个例子通过你的方法实现,给我一个准确的答案。因为我是自学,非专业,所以做不了。请你帮助一下。再次谢谢你。

    2017年12月31日 18:51
  • 这个我尝试过了,但是在编译时,提示长度溢出,个人无法解决,不知道什么原因啊。能就案例给个实现方法吗?谢谢。

    2017年12月31日 18:55
  • Hi,

    感谢你的反馈,该论坛只讨论在开发中遇到的错误,提供这样一个平台给大家讨论。 你在开发中遇到什么错误信息吗?

    如果有,希望你能提供详细的信息,这样方便解决问题。 并不提供完整的demo。

    你可以把可复现问题的代码,放到one drive上面,这样方便大家测试,请不要包含个人信息。

    Best Regards,

    Hart


    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2018年1月3日 6:14
    版主