2020年09月03日
川俣晶の縁側ソフトウェアC# コーディング How Tototal 1465 count

【入門級】C#で文字列の順番を逆転する

Written By: 川俣 晶連絡先

文字列の順番を逆転する §

 ここに、"あいこ/たろう/ポチ"という文字列があるとします。

 順番を逆転して"ポチ/たろう/あいこ"と加工したいと思います。

 ただ単に文字列を逆順にするだけでは"チポ/うろた/こいあ"となって意図した結果になりません。

 ここで必要なのは、区切り文字を意識して名前ごとに文字列を分解した上で並び順を変更することです。

分解するには §

 区切り文字を元に文字列を分解する方法はいくつかあります。

 最も簡単で分かりやすいのはSplitメソッドを使う方法です。

 Splitメソッドには多くのバリエーションがありますが、最も簡単な使い方は文字列.Split(区切り文字)で区切り文字ごとに分解された配列を得る使い方です。

 つまり、"あいこ/たろう/ポチ"という1つの文字列を、"あいこ","たろう","ポチ"という3つの文字列に分解できます。

逆順にするには §

 配列の逆順を得るにはLINQのReverseメソッドを使うと簡単です。ここではそれを使っています。

 配列自身もReverseメソッドを持っています。

分解された文字列を元に戻すには §

 分解した文字列を区切り記号を付けて連結するにはJoinメソッドを使うと便利です。

 1本の文字列をSplitで分解し、加工した上でJoinメソッドで1本の文字列に戻すのはC#の定跡の一つです。

罠の数々 §

  • Splitメソッドは文字列に付けます。しかしJoinメソッドは静的なので型名のStringに付けます。書き方が違います
  • 配列とLINQのRevrseメソッドが仕様が全く違います。混用すると意図しない結果になります
  • LINQのRevrseメソッドが返すのは列挙型です。Joinメソッドは配列ではなく列挙型でも受け入れてくれるので、このサンプルソースは動きます

参考リンク §

String.Split メソッド

String.Join メソッド

Enumerable.Reverse メソッド

Array.Reverse メソッド

リポジトリ §

https://github.com/autumn009/cshowto

StringSplitJoin §

using System;

using System.Linq;

class Program

{

    static void Main()

    {

        // 元データ

        string src = "あいこ/たろう/ポチ";

        // 間違った逆順

        string dst1 = new string(src.Reverse().ToArray());

        Console.WriteLine($"間違った逆順: {dst1}");

        // 正しい逆順

        // まず配列に分解する

        string[] ar = src.Split('/');

        // 配列確認

        foreach (var item in ar) Console.WriteLine($"分解された要素 {item}");

        // 配列の逆順

        var rev = ar.Reverse();

        // 逆順の確認

        foreach (var item in rev) Console.WriteLine($"逆順の要素 {item}");

        // 配列から区切り文字を入れて文字列を組み立てる

        string dst2 = string.Join('/', rev);

        Console.WriteLine($"正しい逆順: {dst2}");

    }

}

実行結果

違った逆順: チポ/うろた/こいあ

分解された要素 あいこ

分解された要素 たろう

分解された要素 ポチ

逆順の要素 ポチ

逆順の要素 たろう

逆順の要素 あいこ

正しい逆順: ポチ/たろう/あいこ

Facebook

COOL C# CREW

C#ハウツー連載の解説増量、カラーのソース、新規書き下ろし追加の読みやすい単行本はこちら。

C#ハウツー: 逆引き入門・こんな機能はどう書くの?
キーワード【 川俣晶の縁側ソフトウェアC# コーディング How To
【C# コーディング How To】の次のコンテンツ
2020年
09月
04日
【入門級】文字列前後の括弧を取る方法
3days 0 count
total 1217 count
【C# コーディング How To】の前のコンテンツ
2020年
09月
02日
【入門級】C#でディレクトリの作成、削除を行う方法
3days 0 count
total 997 count

このコンテンツを書いた川俣 晶へメッセージを送る

[メッセージ送信フォームを利用する]

メッセージ送信フォームを利用することで、川俣 晶に対してメッセージを送ることができます。

この機能は、100%確実に川俣 晶へメッセージを伝達するものではなく、また、確実に川俣 晶よりの返事を得られるものではないことにご注意ください。

このコンテンツへトラックバックするためのURL

http://mag.autumn.org/tb.aspx/20200903085857
サイトの表紙【C# コーディング How To】の表紙【C# コーディング How To】のコンテンツ全リスト 【C# コーディング How To】の入手全リスト 【C# コーディング How To】のRSS1.0形式の情報このサイトの全キーワードリスト 印刷用ページ

管理者: 川俣 晶連絡先

Powered by MagSite2 Version 0.36 (Alpha-Test) Copyright (c) 2004-2021 Pie Dey.Co.,Ltd.