C#
 Computer >> コンピューター >  >> プログラミング >> C#

【C#】大文字で始まる単語の間にスペースを挿入する方法

C#では、WelcomeToMyWebsite のようなパスカルケース(各単語が大文字で始まる)の文字列を、Welcome To My Website のように単語ごとにスペースを入れて整形したい場面があります。本記事では、LINQを使って大文字の前に自動的にスペースを挿入する方法を解説します。

元となる文字列を用意する

まず、スペースが含まれていない文字列を設定します。

var str = "WelcomeToMyWebsite";

ご覧のとおり、この文字列には大文字の前にスペースがありません。次に、これへスペースを追加していきます。

LINQを使ってスペースを挿入する

大文字の前にスペースを追加するには、以下のようにLINQの Select メソッドを使用します。

str = string.Concat(str.Select(x => Char.IsUpper(x) ? " " + x : x.ToString())).TrimStart(' ');

このコードの仕組みは以下のとおりです。

  • Char.IsUpper(x) で、文字列内の各文字が大文字かどうかを1文字ずつ判定します。
  • 大文字だった場合は、その文字の前に半角スペースを付けた文字列を返し、それ以外はそのままの文字を返します。
  • string.Concat で処理結果のすべての文字をつなぎ合わせ、1つの文字列に再構成します。
  • 先頭の文字も大文字であるため、結果の先頭に余分なスペースができてしまうので、TrimStart(' ') で先頭のスペースを取り除きます。

完全なサンプルコード

以下は、大文字で始まる単語の間にスペースを挿入する処理の完全なコード例です。

Example

using System;
using System.Linq;

class Demo {

   static void Main() {
      var str = "WelcomeToMyWebsite";

      Console.WriteLine("Original String: "+str);
      str = string.Concat(str.Select(x => Char.IsUpper(x) ? " " + x : x.ToString())).TrimStart(' ');

      Console.WriteLine("New String: "+str);
      Console.ReadLine();
   }
}

実行結果

このプログラムを実行すると、コンソールには次のように出力されます。

Original String: WelcomeToMyWebsite
New String: Welcome To My Website

このように、LINQの SelectChar.IsUpper を組み合わせることで、わずか1行のコードで大文字の前にスペースを挿入できます。正規表現を使う方法もありますが、LINQの方が意図が明確で読みやすいコードになるのがメリットです。

  1. Wordで単語間の余分なスペースを一括削除する方法|検索と置換の使い方

    Word文書を作成・編集していると、単語や文章の間に余分なスペースが混ざってしまうことがあります。フォントが滑らかな文書では、単語間の余分な空白を目視で見つけるのは意外と難しく、一つずつ探して削除するのは大きな手間です。そんなときは、Microsoft Wordの「検索と置換」機能とワイルドカードを組み合わせれば、文書内の余分なスペースを一括で削除できます。この記事では、具体的な手順と注意点をわかりやすく解説します。Wordで余分なスペースを一括削除する手順以下の手順で、複数の余分なスペースを一度に削除できます。Microsoft Wordで対象の文書を開きます。ホームタブの置換をクリックしま

  2. Wordで単語間の余分なダブルスペースを一括削除する方法

    異なるテキストエディターで作成された文書をMicrosoft Wordで開くと、表示が崩れてしまうことがあります。段落の間に1行以上の空白行が挿入されていたり、余分なスペースが追加されていたりするケースも少なくありません。あるエディターで作成したファイルが別のエディターでも開けるのは、両方のソフトが同じファイル形式を認識しているためです。しかし、エディターごとの仕様の違いにより、テキストの見た目が同じにならないことがあります。 Wordでダブルスペースを削除するには Word文書のピリオド(句点)の後にダブルスペースが入っている理由の一つは、タイプライター時代の慣習にあります。タイプライターで