【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の Select と Char.IsUpper を組み合わせることで、わずか1行のコードで大文字の前にスペースを挿入できます。正規表現を使う方法もありますが、LINQの方が意図が明確で読みやすいコードになるのがメリットです。
-
Wordで単語間の余分なスペースを一括削除する方法|検索と置換の使い方
Word文書を作成・編集していると、単語や文章の間に余分なスペースが混ざってしまうことがあります。フォントが滑らかな文書では、単語間の余分な空白を目視で見つけるのは意外と難しく、一つずつ探して削除するのは大きな手間です。そんなときは、Microsoft Wordの「検索と置換」機能とワイルドカードを組み合わせれば、文書内の余分なスペースを一括で削除できます。この記事では、具体的な手順と注意点をわかりやすく解説します。Wordで余分なスペースを一括削除する手順以下の手順で、複数の余分なスペースを一度に削除できます。Microsoft Wordで対象の文書を開きます。ホームタブの置換をクリックしま
-
Wordで単語間の余分なダブルスペースを一括削除する方法
異なるテキストエディターで作成された文書をMicrosoft Wordで開くと、表示が崩れてしまうことがあります。段落の間に1行以上の空白行が挿入されていたり、余分なスペースが追加されていたりするケースも少なくありません。あるエディターで作成したファイルが別のエディターでも開けるのは、両方のソフトが同じファイル形式を認識しているためです。しかし、エディターごとの仕様の違いにより、テキストの見た目が同じにならないことがあります。 Wordでダブルスペースを削除するには Word文書のピリオド(句点)の後にダブルスペースが入っている理由の一つは、タイプライター時代の慣習にあります。タイプライターで