この記事では、C言語で文字列がひらがなかどうかを判定する方法を解説します。
Unicodeを利用する方法と正規表現を利用する方法の2つを紹介します。
目次から探す
ひらがなの判定方法
日本語の文字列を扱う際に、文字列がひらがなであるかどうかを判定する方法を解説します。
以下の2つの方法を紹介します。
方法1: Unicodeを利用する方法
Unicodeは、世界中の文字を一意に識別するための文字コードです。
C言語では、Unicode文
字を扱うためにw_char型
を使用します。
したがって、文字列がひらがなであるかどうかを判定するには、文字列の各文字のUnicode値を調べ、範囲内にあるかどうかを確認します。
以下に、ひらがなの判定を行うサンプルコードを示します。
#include <stdio.h>
#include <wchar.h>
int isHiragana(const wchar_t* str) {
while (*str) {
if (*str < 0x3040 || *str > 0x309F) {
return 0; // ひらがなでない文字が含まれている場合
}
str++;
}
return 1; // すべての文字がひらがなである場合
}
int main() {
const wchar_t* str1 = L"こんにちは";
const wchar_t* str2 = L"Hello, World!";
if (isHiragana(str1)) {
printf("文字列1はひらがなです。\n");
} else {
printf("文字列1はひらがなではありません。\n");
}
if (isHiragana(str2)) {
printf("文字列2はひらがなです。\n");
} else {
printf("文字列2はひらがなではありません。\n");
}
return 0;
}
上記のコードでは、isHiragana関数
を定義しています。
この関数は、引数として受け取った文字列がすべてひらがなであるかどうかを判定します。
実行結果は以下のようになります。
文字列1はひらがなです。
文字列2はひらがなではありません。
方法2: 正規表現を利用する方法
正規表現を使用することで、文字列がひらがなであるかどうかを簡単に判定することができます。
以下に、正規表現を利用したひらがなの判定を行うサンプルコードを示します。
#include <stdio.h>
#include <regex.h>
int isHiragana(const char* str) {
regex_t regex;
int ret;
ret = regcomp(®ex, "^[ぁ-ん]+$", REG_EXTENDED);
if (ret != 0) {
return 0; // 正規表現のコンパイルに失敗した場合
}
ret = regexec(®ex, str, 0, NULL, 0);
regfree(®ex);
if (ret == 0) {
return 1; // ひらがなである場合
} else {
return 0; // ひらがなではない場合
}
}
int main() {
const char* str1 = "こんにちは";
const char* str2 = "Hello, World!";
if (isHiragana(str1)) {
printf("文字列1はひらがなです。\n");
} else {
printf("文字列1はひらがなではありません。\n");
}
if (isHiragana(str2)) {
printf("文字列2はひらがなです。\n");
} else {
printf("文字列2はひらがなではありません。\n");
}
return 0;
}
上記のコードでは、isHiragana関数
を定義しています。
この関数は、引数として受け取った文字列がすべてひらがなであるかどうかを正規表現を使用して判定します。
実行結果は以下のようになります。
文字列1はひらがなです。
文字列2はひらがなではありません。
以上が、C言語で文字列がひらがなかどうかを判定する方法です。
どちらの方法も、ひらがなの判定を簡単に行うことができますので、適宜使い分けてください。