• ベストアンサー

2000年という文字列から2000を取り出す

データベースから取得したデータに年が文字で入っています。 "2000年"という文字から2000の部分だけを取り出すには どうすればいいでしょうか? ・年の数字部分は4桁以外もありえる ・数字部分は半角 ・取り出した数字は数値に変換したい 初心者に難しそうな部分は簡単なコメントをつけていただければ 大変助かります。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

atoi関数を使います。 数値変換できるところまで変換されます。 int n = atoi("2000年"); でn=2000になります。 #include <stdlib.h> をお忘れなく。

noname#80669
質問者

お礼

ありがとうございます! atoiがそんなに素敵な関数だったとは知りませんでした。 早速やってみます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.2

No.1のatoiで問題ないです。 あとは、sscanfを使うとか、自前の変換関数を作るとか。。。参考まで。 #include <stdio.h> /* printf sscanf */ #include <stdlib.h> /* atoi */ #include <ctype.h> /* isspace isdigit */ int main(void) { char nen[]=" 2000年"; int n; char *p; sscanf(nen,"%d",&n); printf("%d\n",n); n=atoi(nen); printf("%d\n",n); p=nen; n=0; while(isspace(*p)) p++; /* 先頭の空白文字をキャンセル */ while(isdigit(*p)) {n=n*10+*p-'0';p++;} printf("%d\n",n); return 0; }

noname#80669
質問者

お礼

ありがとうございます! 自前の関数を作るしかないと思っていました。 もし自分で作る場合はこういう方法があるのですね。 参考にさせていただきます!

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • EXCELVBA 文字の判別

    excelVBAで困っていることがあります。 あるセルに入っているデータの先頭の文字より半角数字5桁の数字を取得する処理を作っています。 先頭5文字をmid関数で取得すれば、簡単だと思っていたのですが、 データを見てみたところ、以下のようなデータがあることがわかりました。 (例)20-500(半角-),20―500(ダッシュ),20500(全角) 20 500(半角スペース),20 500(全角スペース),205(桁落ち),2050あ(全角文字付き) 5桁の数字が取得できると思われる箇所は 半角5桁で取得しなければいけません。 また、正しいデータは半角数字5桁だよ、 ということをユーザに知らせるため、半角数字5桁のデータ以外は それぞれ半角-は赤、ダッシュは青等セルの色を変更する必要があって困っています。 ご教授ください。よろしくお願いいたします。

  • エクセルの文字列操作の仕方

    ご存じの方がいらっしゃいましたら、教えてください。 今、エクセルの住所リストを固定長のテキストファイルに変換する作業をしています。 このやり方が合ってるのかわかりませんが、各項目のデータを「&」で結んで、ひとりのデータを1行のテキストデータにしようとしています。 というわけで作業をしているんですが、他の項目はうまくいくんですが、電話番号の部分で、指定フォーマット(半角12文字)への変換ができずに行き詰まってしまいました。 どういうことかと言いますと、エクセルの数字を12桁の文字列に統一できないのです。(10桁の数字+2桁の空白という風に) 電話番号のほとんどは10桁ですが、中にはブランクとか携帯の11桁とか、いろいろあります。 件数が多いので、1件1件2桁のブランクを加えるわけにもいきません。 いい方法がありましたら、ご教授お願いいたします。

  • EXCELで大文字から小文字へ変換したい

    EXCEL2000の住所録データを筆王の住所録へ変換しているのですが、うまくいきません。(-_-;)それは、郵便番号と電話番号が大文字(全角)になっていて、筆王の郵便番号の桁数でいくと半角で10桁となっています。EXCELのデータが大文字のため入りきれないのです。EXCELの大文字数字(全角)をどうにかして小文字数字(半角)にできないものか?データが多いもので、悩んでいます。どなたかお助けくださいませm(__)m

  • InDesignの半角文字列を全角に変換する方法

    InDesign CSで、半角の文字列を全角に自動的に変換する設定方法についてお聞きします。 InDesignに流し込んだ日本語の文章の中で、2桁の半角数字と、4桁の半角の数字が一緒に混じっています。このうち、4桁の半角数字だけを全角に自動的に変換する設定がInDesignにあるのでしょうか? 手動でいちいち変換するのが大変なので、自動的に変換する設定があれば便利だなと思っています。 ネットで調べたのですが、今ひとつ分かりませんでした。 不勉強で申し訳ないのですが、設定方法があれば教えて頂ければ幸いです。 よろしくお願いします。

  • シェルの文字列取得について

    シェル(Bash)の文字列取得についてご教授ください。 文字列:  test(12345) 上記の文字列から"12345"(括弧内の数値部分)を取り出し、変数へ格納する場合、どのように行えばよいのでしょうか? ちなみに1桁だったり2けただったりと数値の桁は変動します。 よろしくお願いします。

  • 数字と文字列から数字のみ取り出したい

    下記のような数字と文字の組み合わさった文字列から数字のみを取り出したいのですが、 基準となる文字もなく、数字の桁、文字数もバラバラで、さらに文字部分にも数字が 入っていて調べた数式が使えず困っています。 (例1)109778大倉山マンション第3⇒109778 を取り出したい (例2)13482マックハイム綱島第10 ⇒ 13482 を取り出したい (例3)12896ハイム大倉山⇒12896 を取り出したい (例4)1198藤和シティコープ大倉山太尾町A棟⇒1198を取り出したい 調べた数式=LEFT(A1,LEN(A1)*10-SUM(LEN(SUBSTITUTE(A1,{0,1,2,3,4,5,6,7,8,9},)))) 上記の数式だと(例1)(例2)の場合、建物名の数値を反映してしまい数値のみ取り出せません。 数値部分はみたところ4~6桁でした。 何か良い数式がありましたら、ご教授願います。

  • 目的の文字列を取得するには?

    ×××× 2011年10月6日 ×××××× というような文字列から日付の部分を取り出そうとしています。 if (mb_ereg("([0-9]{4})年([0-9]{2,})月([0-9]{2,})日",$string,$result)){ echo $result; } という方法で取得しようとしているのですが、失敗します。 半角数字と全角の漢字が混在しているような文字列から、目的の部分を取得する にはどうすればいいでしょうか?

    • ベストアンサー
    • PHP
  • Excel セル内の文字だけを取り出すには

    Excelの1つのセルに 01234 ABCDEFG のように、「数字5つ(固定)+半角スペース+(任意の数の)文字」 が入力されています。数値は必ず5桁と決まっていますが、 文字列の数はさまざまです。 関数で文字の部分だけ、別のセルに取り出したいのですが、 どの関数を使うとできますか?教えて下さい。 よろしくお願いします。

  • エクセルで、半角文字列を抽出するには

    使用機種はXPでEXCEL2003です。 住所のデータ整理をしています。 地名の後の番地のみ半角数字(ハイフンも半角)で入力されており、その部分だけを別の列に移動させる作業です。 関数で、半角文字列だけを抽出することはできますか? left関数を使おうとも思いましたが、文字数がバラバラなので、難しいと思いました。 私は、一つひとつコピー→ペーストをするしか思いつかないほどの初心者です。 どうぞよろしくお願いいたします。

  • エクセル 数値データを桁をそろえて文字列データに変換するには

    よろしくお願いします。 エクセル2002を使用しています。 数値データとして整数1桁、2桁、3桁のデータが混在してあります。 これを1桁、2桁のものは前にゼロを付けて全て3桁の文字列に変換する方法はありますか? できれば関数を使って 例  数値 文字列   8⇒008  12⇒012 235⇒235  11⇒011 できた文字列で品番コードとして使用します。 どなたかご存知の方、ご教授お願いします。