C#の正規表現(Regex)を使って文字列内のすべての数字を抽出する方法
文字列内に含まれるすべての数字を照合・抽出したい場合は、C#の Regex クラス(System.Text.RegularExpressions 名前空間)を利用するのが最も簡単で効率的な方法です。
基本的な手順
まず、数字を含む文字列を用意します。
string str = "These are my marks: 90 out of 100!";
文字列から連続した数字を取得するには、次の正規表現パターンを使用します。
@"\d+"
このパターンの意味は以下のとおりです。
- \d:0〜9までの任意の1桁の数字に一致
- +:直前の要素が1回以上繰り返される場合に一致(=連続した数字をひとまとまりとして取得)
サンプルコード
実際に Regex.Matches メソッドを使って、文字列内のすべての数字を照合して表示するプログラムがこちらです。
using System;
using System.Text.RegularExpressions;
namespace Demo {
class Program {
private static void showMatch(string text, string expr) {
Console.WriteLine("The Expression: " + expr);
MatchCollection mc = Regex.Matches(text, expr);
foreach (Match m in mc) {
Console.WriteLine(m);
}
}
static void Main(string[] args) {
string str = "These are my marks: 90 out of 100!";
Console.WriteLine("Getting digits from a string...");
showMatch(str, @"\d+");
Console.ReadKey();
}
}
}コードのポイント
- Regex.Matches:入力文字列全体をスキャンし、パターンに一致したすべての部分を MatchCollection として返します。
- foreach ループ:取得した各マッチ結果を順番に出力します。
- @"..."(逐語的文字列リテラル):エスケープシーケンスを無効化するため、「\d」をそのまま記述できます。
実行結果
Getting digits from a string... The Expression: \d+ 90 100
このように、文中の「90」と「100」という2つの数値が個別に抽出されました。「+」(1回以上の繰り返し)を付けることで、桁ごとに分割されず、連続した数字がひとつのまとまりとして取得できる点がポイントです。
-
【Python】文字列に含まれる英字と数字の個数をカウントする方法
はじめに 文字列が与えられたとき、その中に含まれる「英字」と「数字」の合計数を計算したい場面はよくあります。この記事では、Pythonを使って文字列内の英字数と数字数をカウントするシンプルな方法を解説します。 実行例 入力: s = tutorialsP0int 出力: Letters: 13 Digits: 1 説明: この文字列には英字が13個、数字が1個含まれています。 解決のアプローチ 文字列内の英字と数字の合計数を求めるには、まず文字列全体を先頭から順に走査(イテレート)します。走査中にアルファベットを見つけたら英字のカウントを1増やし、数字を見つけたら数字のカウントを1増やしま
-
Pythonで数値の各桁の合計を求める方法(文字列を使わない実装)
ある数値 num が与えられたとき、その各桁の数字をすべて足し合わせた合計を求めます。ここでは、文字列に変換せず、数値演算だけで解く方法を紹介します。たとえば、入力が num = 512 の場合、5 + 1 + 2 = 8 となるため、出力は 8 になります。解き方の手順合計を格納する変数 sum を 0 で初期化します。num が 0 になるまで、次の処理を繰り返します。sum に「num を 10 で割った余り」(最下位の桁)を加算します。num を「10 で割った商」(整数)で更新します。繰り返しが終わったら sum を返します。アルゴリズムのポイントこの手法では、「10 で割った余り」