A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

追忆逝水年华

初级黑马

  • 黑马币:0

  • 帖子:4

  • 精华:0

© 追忆逝水年华 初级黑马   /  2014-2-27 20:47  /  1889 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 追忆逝水年华 于 2014-3-2 10:58 编辑

将“I love you"→“I evol uoy",反序输出。
            
            string a = "I love you";
            StringBuilder sbStr = new StringBuilder();
            string[] strArray = a.Split(' ');
            for (int i = 0; i < strArray.Length; i++)
            {
                var item = strArray.Reverse();
                sbStr.Append(item + " ");
            }
            Console.WriteLine(sbStr.ToString());
            Console.ReadKey();
输出结果是:system.linq.enumerable+<reverseiterator>d__a0'1[system.char],有知道原因的吗

8 个回复

倒序浏览
            string a = "I love you";
            StringBuilder sbStr = new StringBuilder();
            string[] strArray = a.Split(' ');

            for (int i = 0; i < strArray.Length; i++)
            {
                char[] item = strArray[i].Reverse().ToArray();
                sbStr.Append(item);
                sbStr.Append(' ');
            }
            Console.WriteLine(sbStr);
            Console.ReadKey();

你这个貌似两个地方有问题。
char[] item = strArray[i].Reverse().ToArray();
Reverse()这句msdn那是这样用的。

sbStr.Append(item);
这句的参数也不能item+“ ”这样写。
回复 使用道具 举报 1 0
本帖最后由 张旭辉 于 2014-2-28 21:03 编辑

1. 可以分割他们,空格为标志,这样可以得到3个string类型的数组。
2. 声明一个方法,反向输出 ,最后一个字符串拼接就行了。
  1.    static void Main(string[] args)
  2.         {
  3.             //讲字符串反序输出 “I love you"→“I evol uoy"
  4.             string zfc = Console.ReadLine();
  5.             string[] b = zfc.Split(' ');
  6.             for (int i = 0; i < b.Length; i++)
  7.             {
  8.                 b[i] = fanzhuan(b[i]);

  9.              }
  10.             Console.WriteLine(string.Join(" ", b));
  11.             Console.ReadKey();
  12.         }

  13.         private static string fanzhuan(string p)
  14.         {
  15.             char[] m = p.ToCharArray();
  16.             for (int i = 0; i < m.Length / 2; i++)
  17.             {
  18.                 char temp = m[i];
  19.                 m[i] = m[m.Length - 1 - i];
  20.                 m[m.Length - 1 - i] = temp;
  21.             }
  22.             return new String(m);
  23.         }
复制代码

回复 使用道具 举报
Q.z.l 发表于 2014-2-28 04:27
string a = "I love you";
            StringBuilder sbStr = new StringBuilder();
         ...

你说的代码是对的,可是没解释为什么人家那样写不行?
var item = strArray.Reverse();
                sbStr.Append(item + " ");
可是这两行代码为啥不能这样写?
回复 使用道具 举报
请及时设置成‘提问结束’,这样版主才会相应的给你加分呢。
回复 使用道具 举报
Q.z.l 发表于 2014-2-28 04:27
string a = "I love you";
            StringBuilder sbStr = new StringBuilder();
         ...

我是参照了以下代码:
//下面的是"I love you"→"you love I "
            string a = "I love you";
            StringBuilder sbStr = new StringBuilder();
            foreach (var item in a.Split(' ').Reverse())
            {
                sbStr.Append(item + " ");
            }
            Console.WriteLine(sbStr.ToString());
这个是把单词顺序反转,我就改了下把单词分割后再把每个单词的字母顺序反转,结果就不正确了
回复 使用道具 举报
Reverse() 方法是反转一个数组
var item = strArray[i].Reverse(); 你这里拿去反转一个字符串不行.
你可以把strArray[i]分割成一个字符数组在转换。
回复 使用道具 举报
追忆逝水年华 发表于 2014-3-1 16:32
我是参照了以下代码:
//下面的是"I love you"→"you love I "
            string a = "I love you";

其实你把你写的和你贴的这个代码一起写到vs里面,让后把鼠标各移到两段代码的var上就能看出你写的代码和这段代码返回的是什么类型的变量了。
你的代码返回的是一个叫公开枚举器的集合类型,这段代码用foreach返回的是string类型。
让后你用sbStr.Append(item+“ “)。你给的参数就是一个集合类型加string类型。

回复 使用道具 举报
Console.WriteLine("请输入一段英文");
            string str = Console.ReadLine();
            string[] s = str.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
            Array.Reverse(s);
            string st = null;
            for (int i = 0; i < s.Length; i++)
            {
                st += s[i] + " ";
            }
            Console.WriteLine(st);
            Console.ReadLine();
--------------------------------------------------------------------
额,我只记得Array.Reverse();好像是无返回值的,怎么你们都赋值了?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马