C#中,一个字符串里面的词语倒序问题,词语之间有空格但有几个空格不定,如何实现词语倒序(不是字母倒序)

时间:2022-09-06 10:55:22
比如:string  str = "I love CSDN  It   can      help        me";

倒序结果: string str1 = "me        help      can   It  CSDN love I";

4 个解决方案

#1


可以按空格split为数组,然后将数组反序

#2


引用 1 楼 bdmh 的回复:
可以按空格split为数组,然后将数组反序


中间空格 不一定是一个  有可能是多个 比如 : Hello                                        How             are                                                               you!

#3


string str = "I love CSDN  It   can      help        me";
            str = string.Join("", Regex.Split(str, @"((?<=\S)(?=\s+)|(?<=\s+)(?=\S))").Reverse());

#4


如果不考虑性能

        private static string ExChangeStr(string input,char split)
        {
            string output = string.Empty;
            string keyWord = string.Empty;
            int len = input.Length;
            for(int i=len -1;i >=0;i--)
            {
                var k = input[i];
                if(k == split)
                {
                    output += keyWord;
                    output += k;
                    keyWord = string.Empty;
                }
                else
                {
                    keyWord = k + keyWord;
                }
            }
            //最后一个词
            output += keyWord;
            return output;
        }

#1


可以按空格split为数组,然后将数组反序

#2


引用 1 楼 bdmh 的回复:
可以按空格split为数组,然后将数组反序


中间空格 不一定是一个  有可能是多个 比如 : Hello                                        How             are                                                               you!

#3


string str = "I love CSDN  It   can      help        me";
            str = string.Join("", Regex.Split(str, @"((?<=\S)(?=\s+)|(?<=\s+)(?=\S))").Reverse());

#4


如果不考虑性能

        private static string ExChangeStr(string input,char split)
        {
            string output = string.Empty;
            string keyWord = string.Empty;
            int len = input.Length;
            for(int i=len -1;i >=0;i--)
            {
                var k = input[i];
                if(k == split)
                {
                    output += keyWord;
                    output += k;
                    keyWord = string.Empty;
                }
                else
                {
                    keyWord = k + keyWord;
                }
            }
            //最后一个词
            output += keyWord;
            return output;
        }