C#プログラミングにおいて文字列を数値に変換したり、Int型とString型が混在した配列を一括で変換する方法は重要です。
本記事では初心者向けにこれらの操作について簡潔かつわかりやすく解説します。
文字列を数値かどうか判定し変換し抽出する
正規表現で数値か判定し変換する
正規表現を使用して文字列が数値であるかどうかを判定し必要に応じて数値に変換する方法を示します。
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
string input = "123";
if (IsNumeric(input))
{
int number = int.Parse(input);
Console.WriteLine("Input is numeric: " + number);
}
else
{
Console.WriteLine("Input is not numeric");
}
}
static bool IsNumeric(string input)
{
return Regex.IsMatch(input, @"^\d+$"); // 正規表現を使って文字列が数字のみで構成されているか確認
}
}
このコードでは、IsNumericメソッドで正規表現を使用して文字列が数字のみで構成されているかを確認します。
^\d+$は文字列が数字のみで構成されていることを示す正規表現パターンです。
IsNumericメソッドが true を返した場合には、int.Parse メソッドを使用して文字列を整数に変換します。
int.Parseで数値か判定し変換する
このコードでは、int.TryParse メソッドを使用して input 文字列を整数に変換します。
using System;
class Program
{
static void Main()
{
string input = "123";
int number;
if (int.TryParse(input, out number))
{
Console.WriteLine("Parsed number: " + number);
}
else
{
Console.WriteLine("Input is not a valid integer.");
}
}
}
変換が成功した場合は true を返し変換後の値が number 変数に格納されます。
変換に失敗した場合は false を返し、number 変数にはデフォルト値が格納されます。
以下記事では数値から文字列変換時の0埋めやカンマ区切りについて紹介してるよ
文字列配列から数字だけ判定し抽出する
文字列を配列から数字のみ抽出する場合、各文字列が数字のみかどうかを確認する必要があります。
以下はその方法です。
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
string[] strings = { "ddwdw", "123", "456", "789ghi" };
foreach (string str in strings)
{
if (IsNumeric(str))
{
Console.WriteLine(str);
}
}
}
static bool IsNumeric(string str)
{
return Regex.IsMatch(str, @"^\d+$"); // 正規表現を使って文字列が数字のみで構成されているか確認
}
}
このコードでは、IsNumericメソッドを使用して文字列が数字のみで構成されているかを確認します。
Regex.IsMatchメソッドは指定された正規表現パターン(^\d+$)に文字列が一致するかどうかを判定します。
^\d+$は、文字列が数字のみで構成されていることを示す正規表現パターンです。
IntやString混在配列を入替する場合
混在配列でも数字のみとわかっている場合
Int型とString型が混在した配列で数字とわかっている場合にはLINQで簡単に変換ができます。
using System;
using System.Linq;
class Program
{
static void Main()
{
object[] mixedArray = { 1, "2", 3, "4", 5 };
var convertedArray = mixedArray.Select(item => Convert.ToInt32(item)).ToArray();
Console.WriteLine("変換後の配列: [" + string.Join(", ", convertedArray) + "]");
}
}
この例では、Convert.ToInt32
メソッドを使用して混在した配列をInt型の配列に一括変換しています。
混在配列でも数字以外の文字が含まれている場合
数字のみを抽出新しい配列を作成するには型のチェックと変換を行う必要があります。
以下はその方法です。
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
object[] mixedArray = { 1, "2", 3, "fefef", 5 };
List numbers = new List();
foreach (object item in mixedArray)
{
if (item is int)
{
numbers.Add((int)item);
}
else if (item is string)
{
int number;
if (int.TryParse((string)item, out number))
{
numbers.Add(number);
}
}
}
foreach (int number in numbers)
{
Console.WriteLine(number);
}
}
}
このコードでは、mixedArray の各要素に対してその要素が int 型か string 型であるかをチェックします。
int 型であればそのまま、string 型であれば int.TryParse メソッドを使用して数値に変換します。
変換に成功した場合に数字のみの配列に追加します。
まとめ
本記事ではC#における文字列を数値に変換する方法とInt型とString型が混在した配列を一括で変換する方法について解説しました。
これらの手法を使いこなすことでプログラムの柔軟な処理が可能となります。
初心者の方もぜひ実際のコードで試してみてください。