มี 2 ระดับการ "Reverse": กลับตัวอักษร (Character Reverse) และ กลับลำดับคำ (Word Reverse)
1. กลับตัวอักษร (Character Reverse)
string str = "Welcome";
// ผลลัพธ์: "emocleW"
// วิธีต่างๆ
var r1 = new string(str.Reverse().ToArray()); // LINQ
var r2 = new string(str.ToCharArray().Reverse().ToArray()); // Array.Reverse
var r3 = new StringBuilder(str).Reverse().ToString(); // Extension Method (Custom)
2. กลับลำดับคำ (Word Reverse)
string sentence = "Hello World from C#";
// ผลลัพธ์: "C# from World Hello"
string reversedWords = string.Join(" ", sentence.Split(' ').Reverse());
3. กลับตัวอักษรในแต่ละคำ (Per-Word Character Reverse)
string sentence = "Hello World";
// ผลลัพธ์: "olleH dlroW"
string perWordReversed = string.Join(" ",
sentence.Split(' ').Select(w => new string(w.Reverse().ToArray())));
ตัวอย่างครบถ้วน
using System;
using System.Linq;
class Demo {
static void Main() {
string str = "Welcome";
string sentence = "Hello World from C#";
// 1. Character Reverse
Console.WriteLine("Char Reverse: " + new string(str.Reverse().ToArray()));
// emocleW
// 2. Word Reverse
Console.WriteLine("Word Reverse: " + string.Join(" ", sentence.Split(' ').Reverse()));
// C# from World Hello
// 3. Per-Word Character Reverse
Console.WriteLine("Per-Word Char Reverse: " +
string.Join(" ", sentence.Split(' ').Select(w => new string(w.Reverse().ToArray()))));
// olleH dlroW morf #C
// 4. ทั้งสอง: Reverse Words แล้ว Reverse Chars ในแต่ละคำ
Console.WriteLine("Full Reverse: " +
string.Join(" ", sentence.Split(' ').Reverse().Select(w => new string(w.Reverse().ToArray()))));
// #C morf dlroW olleH
Console.ReadLine();
}
}
Performance: StringBuilder สำหรับสตริงยาว
string ReverseWordsEfficient(string input) {
var words = input.Split(' ');
var sb = new System.Text.StringBuilder(input.Length);
for (int i = words.Length - 1; i >= 0; i--) {
if (i < words.Length - 1) sb.Append(' ');
sb.Append(words[i]);
}
return sb.ToString();
}
สรุป
| เป้าหมาย | Code Snippet |
|---|---|
| Reverse Characters | new string(str.Reverse().ToArray()) |
| Reverse Word Order | string.Join(" ", str.Split(' ').Reverse()) |
| Reverse Chars per Word | string.Join(" ", str.Split(' ').Select(w => new string(w.Reverse().ToArray()))) |
| Both (Full Reverse) | string.Join(" ", str.Split(' ').Reverse().Select(w => new string(w.Reverse().ToArray()))) |