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

【入門級】文字列中の1文字を2文字で置換する

Written By: 川俣 晶連絡先

できない文字の置き換え §

 ドイツ語のß(エスツェット)は表記できない場合ssに置き換えて表記されます。

 たとえば、Fußballという単語をFussballに置き換える例を考えてみましょう。

 通常文字の置換はString.Replace('?','?')のメソッドを使います。しかし、今回の場合はこれを使えません。1文字を1文字で置き換える場合にしか使えないからです。

 こういう場合は、同じReplaceメソッドでも文字列の置換のバリエーションString.Replace("???","???")を使ってしまえば上手く行きます。1文字を2文字に置き換える場合でも、文字列置換でオッケーです。

 しかしchar型の値をstring型の引数に渡すことはできません。その時は、ToStringメソッドを使えばその1文字を表す文字列を得られます。

罠の数々 §

  • カルチャに注意する。カルチャの指定次第では思いがけない文字を同一視してくれることがある。思い通りに変換されないときは、カルチャの指定をチェックすると良い
  • String.Replaceメソッドはとても簡単に利用できるメソッドなので、使える時はどんどん使うと良い。しかし、お手軽な反面制限は多いし、機能も限られている。十分ではないと思ったらすぐに他の方法を模索した方が良い
  • でも便利で手軽だからすぐに使ってしまうのが罠である
  • 文字型を文字列型に変換するのはToStringメソッド
  • 文字列型を文字型に変換するのは一般論としてはできない。先頭の1文字だけ取り出すのなら文字列[0]のように添え字に0を指定すると先頭の1文字が出てくる。LINQが使えるならFirst/FirstOrDefaultメソッドでも可

参考リンク §

String.Replace メソッド

Char.ToString メソッド

リポジトリ §

https://github.com/autumn009/cshowto

StringReplace §

using System;

using System.Text;

class Program

{

    static void Main()

    {

        var src = "Fußball";

        var targetChar = 'ß';

        Console.WriteLine("文字置換を試す (できない)");

        var dst1 = src.Replace(targetChar, '?');

        Console.WriteLine(dst1);

        Console.WriteLine("1文字単位で処理してみる");

        var dst2 = new StringBuilder();

        foreach (var item in src) dst2.Append(item == targetChar ? "ss" : item);

        Console.WriteLine(dst2);

        Console.WriteLine("1文字だけど文字列置換に切り換える");

        var dst3 = src.Replace(targetChar.ToString(), "ss");

        Console.WriteLine(dst3);

    }

}

実行結果

文字置換を試す (できない)

Fu?ball

1文字単位で処理してみる

Fussball

1文字だけど文字列置換に切り換える

Fussball

Facebook

COOL C# CREW

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

C#ハウツー: 逆引き入門・こんな機能はどう書くの?
キーワード【 川俣晶の縁側ソフトウェアC# コーディング How To
【C# コーディング How To】の次のコンテンツ
2020年
09月
07日
【入門級】文字列の最後の1文字を取得する。最後の2文字を取得する
3days 0 count
total 1013 count
【C# コーディング How To】の前のコンテンツ
2020年
09月
05日
【入門級】配列を同じ値で初期化する
3days 0 count
total 1758 count

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

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

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

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

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

https://mag.autumn.org/tb.aspx/20200906101727
サイトの表紙【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.