5

文字列を逆形式で出力したい:

入力: My name is Archit Patel

出力: Patel Archit is name My.

以下を結びましたが、 と表示されletaP tihcrA si eman ymます。

public static string ReverseString(string s)
{
    char[] arr = s.ToCharArray();
    Array.Reverse(arr);
    return new string(arr);
}
4

19 に答える 19

19

文字を逆にするのではなく、文字列を単語に分割し、それらを逆にする必要があります。

text = String.Join(" ", text.Split(' ').Reverse())

フレームワーク 3.5 では:

text = String.Join(" ", text.Split(' ').Reverse().ToArray())

フレームワーク 2.0 では:

string[] words = text.Split(' ');
Array.Reverse(words);
text = String.Join(" ", words);
于 2013-03-26T10:03:56.940 に答える
7

このプログラムのコードを送ってください。」

わかった ...

using System;
using System.Linq;

class Program
{
    static void Main(string[] args)
    {
        string text = "My name is Archit Patel";

        Console.WriteLine(string.Join(" ", text.Split(' ').Reverse()));
    }
}

今:あなたは何を学びましたか?

また、Guffa が指摘しているように、.Net 4.0 より前のバージョンでは、string.Join がこれらのバージョンで正しいオーバーロード.ToArray()を持っていないため、追加する必要があります。

于 2013-03-26T10:04:57.620 に答える
5

組み込み関数なしでこれを試してください

public string ReverseFullSentence(string inputString)
        {
            string output = string.Empty;
            string[] splitStrings = inputString.Split(' ');
            for (int i = splitStrings.Length-1; i > -1 ; i--)
            {
                output = output + splitStrings[i]+ " ";
            }
                return output;
        }
于 2019-05-30T10:49:07.717 に答える
1

あなたは試すことができます:

string[] words = "My name is Archit Patel".Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
IEnumerable<string> reverseWords = words.Reverse();
string reverseSentence = String.Join(" ", reverseWords);
于 2013-03-26T10:07:29.677 に答える
1

ここに簡単な方法があります

        public static string MethodExercise14Logic(string str)
        {
            string[] sentenceWords = str.Split(' ');
            Array.Reverse(sentenceWords);
            string newSentence = string.Join(" ", sentenceWords);
            return newSentence;
        }

  1. まず、sentence word という配列を作成し、split メソッドを使用して配列にすべての単語を入力します。区切り文字としてスペースが使用され、いつ分割するかを分割メソッドに伝えることに注意してください。
  2. 次に、Array クラスの Reverse メソッドを使用して、配列全体を反転します。
  3. 次に、文字列クラスの Join メソッドを使用して、反転した配列を newSentence という文字列に結合します。
  4. 最後に、メソッドは newSentence 文字列を返します。
于 2018-11-02T10:29:44.877 に答える
0

this.lblStringReverse.Text = 逆 (this.txtString.Text);

private int NoOfWhiteSpaces(string s)
        {
            char[] sArray = s.ToArray<char>();
            int count = 0;
            for (int i = 0; i < (sArray.Length - 1); i++)
            {
                if (sArray[i] == ' ') count++;
            }
            return count;
        }
        private string Reverse(string s)
        {
            char[] sArray = s.ToArray<char>();
            int startIndex = 0, lastIndex = 0;
            string[] stringArray = new string[NoOfWhiteSpaces(s) + 1];
            int stringIndex = 0, whiteSpaceCount = 0;

            for (int x = 0; x < sArray.Length; x++)
            {
                if (sArray[x] == ' ' || whiteSpaceCount == NoOfWhiteSpaces(s))
                {
                    if (whiteSpaceCount == NoOfWhiteSpaces(s))
                    {
                        lastIndex = sArray.Length ;
                    }
                    else
                    {
                        lastIndex = x + 1;
                    }
                    whiteSpaceCount++;

                    char[] sWordArray = new char[lastIndex - startIndex];
                    int j = 0;
                    for (int i = startIndex; i < lastIndex; i++)
                    {
                        sWordArray[j] = sArray[i];
                        j++;
                    }

                    stringArray[stringIndex] = new string(sWordArray);
                    stringIndex++;
                    startIndex = x+1;
                }

            }
            string result = "";
            for (int y = stringArray.Length - 1; y > -1; y--)

                {
                    if (result == "")
                    {

                        result = stringArray[y];
                    }
                    else
                    {
                        result = result + ' ' + stringArray[y];
                    }
            }
            return result;
        }
于 2014-05-10T07:59:26.483 に答える
0
namespace Reverse_the_string
{
    class Program
    {
        static void Main(string[] args)
        {

           // string text = "my name is bharath";
            string text = Console.ReadLine();
            string[] words = text.Split(' ');
            int k = words.Length - 1;
            for (int i = k;i >= 0;i--)
            {
                Console.Write(words[i] + " " );

            }

            Console.ReadLine();

        }
    }
}
于 2016-09-13T16:54:03.047 に答える
0

split メソッドを使用して配列に配置します。

 string[] words = s.Split(' ');

次に、array.reverse で配列を反転します

words = Array.Reverse(words);

for-each ループで出力してスペースを追加できるようになりました

お役に立てれば

于 2013-03-26T10:05:05.173 に答える
0

これは、その場で行う必要がある場合の面接の質問に対する私の解決策です。交換用にもう1文字使用します。スペースはセパレーターとしてのみ使用されると思います。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
class Program
{
    static void Main(string[] args)
    {
        StringBuilder sb = new StringBuilder("abcd efg hijk");
        Reverse(sb, 0 , sb.Length - 1);
        Console.WriteLine(sb);
        ReverseWords(sb);
        Console.WriteLine(sb);
        ReverseWordOrder(sb);
        Console.WriteLine(sb);
    }
    static void Reverse(StringBuilder sb, int startIndex, int endIndex)
    {

        for(int i = startIndex; i <= (endIndex - startIndex) / 2 + startIndex; i++)
        {
            Swap(sb,i, endIndex + startIndex - i);
        }
    }

    private static void Swap(StringBuilder sb, int index1, int index2)
    {
        char temp = sb[index1];
        sb[index1] = sb[index2];
        sb[index2] = temp;
    }

    static void ReverseWords(StringBuilder sb)
    {
        int startIndex = 0;
        for (int i = 0; i <= sb.Length; i++)
        {
            if (i == sb.Length || sb[i] == ' ')
            {
                Reverse(sb, startIndex, i - 1);
                startIndex = i + 1;
            }
        }
    }
    static void ReverseWordOrder(StringBuilder sb)
    {
        Reverse(sb, 0, sb.Length - 1);
        ReverseWords(sb);
    }
}
}
于 2016-10-06T20:15:39.160 に答える
0

非 linq ソリューションが必要な場合:

static string ReverseIntact(char[] input)
{
    //char[] input = "dog world car life".ToCharArray();
    for (int i = 0; i < input.Length / 2; i++)
    {//reverse the expression
        char tmp = input[i];
        input[i] = input[input.Length - i - 1];
        input[input.Length - i - 1] = tmp;
    }
    for (int j = 0, start = 0, end = 0; j <= input.Length; j++)
    {
        if (j == input.Length || input[j] == ' ')
        {
            end = j - 1;
            for (; start < end; )
            {
                char tmp = input[start];
                input[start] = input[end];
                input[end] = tmp;
                start++;
                end--;
            }
            start = j + 1;
        }
    }
    return new string(input);
}
于 2015-01-14T21:03:46.877 に答える