• ベストアンサー

文字列から数字を取り出す方法

質問があります。 例えば、テキストファイルから文章を一行ずつ読み込み、それをString型の変数に格納していきます。 その文から数字(整数で、何桁かはわからない。)を取り出し(ちなみにその数字の前後には特定の文字がついています)、変数に格納するというプログラムを作りたいのですが、具体的な方法がわかりません。 よろしければ是非教えてください!

  • Java
  • 回答数1
  • ありがとう数5

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

  • ベストアンサー
  • covachan
  • ベストアンサー率38% (46/120)
回答No.1

こんな感じですか? 数値以外を除きそのまま代入させます String str = "ABCDABCD1234512345abcd"; int ret = Integer.parseInt(str.replaceAll("[^0-9]","")); System.out.println(ret); //結果表示

関連するQ&A

  • 文字列や文字から整数への変換方法について

    文字列(string型)や文字(char型)から整数(int型など)に変換 する時のルールがよく解りません。 たとえば、キーボードから数字を打って、その入力された数字を 数値として整数型の変数に代入したい場合のやり方です。 ちょっとプログラムを作ってみました。 using System; class clmain { private static void Main() { Console.Write("1桁の整数を入れてね "); char ch = char.Parse(Console.ReadLine()); int by1 = (int)ch; int by2 = (int)char.GetNumericValue(ch); Console.WriteLine("by1 = {0}, by2 = {1}, ch = {1}", by1, by2, ch); Console.Write("整数を入れてね "); string st = Console.ReadLine(); /* by = (int)st; コンパイルエラー */ int by3 = int.Parse(st); Console.WriteLine("by3 = {0}, st = {1}", by3, st); } } まず、char型からint型への変換では、  int型変数=(int)char型変数; はコンパイルは通りますけど、実行すると全く違った値が入って しまいます。たとえば char型変数の値が "1" だと、int型変数には 49 が入ります。 int型変数 = (int)char.GetNumericValue(char型変数); と書いてようやく、思い通りの動きをしてくれます。 また、string型からint型への変換では  int型変数=(int)string型変数; はコンパイルエラーになります。 int型変数 = int.Parse(string型変数); とするとコンパイル出来て正しく動きます。 これで質問ですけど、 (1)なぜstring型とchar型で、int型への変換方法が違うのでしょうか? (2)int型変数=(int)char型変数; とすると、上に書いたように、全く 違った(希望しない)値が代入されてしまいます。これは、どういう 動きをしているのでしょうか? また、これはコンパイルエラーに なりませんけど、どういう時にこの書き方をするのでしょうか? 解る方、お願いします。

  • 数字の入った文字列

    例えば、テキストファイルに以下のような文字列があるとき inoki11 inoki12 inoki13 inoki14 ogawa11 ogawa12 ogawa13 「sscanf」を用いて一行ずつよんで inoki11 inoki12 だけとりだしたテキストファイルを新たにつくりたいのですが、 そのとき、文字の部分と数字の部分を分けて考える必要があると 思うのです。 そこで、文字の部分は、文字列、数字の部分は数列と読み込みたいのですが それは可能でしょうか? 「strcmp」だとすべて文字列として読み込んでしまいますよね。 「strncmp」をうまく使えばできそうなのですが、 よく分かりません。 何かいい方法があれば教えてください。 お願いします。

  • 文字列の比較

    現在Cでプログラムをつくっているのですが いきずまってしまいました。 1.テキストファイルを読み込む 2.書き込みファイルを開く 3.読み込んだデータを一行読み込んで   その行の特定の文字列があれば、   特定の文字列のみ取り出し、   書き込みファイルに書く。    4.次以降の行も同じ処理をする。    5.読み込み、書き込みファイルを閉じる。 と、こんな感じのプログラムなのですが、 3の特定の文字列をどのように取り出せばいいのかわかりません。 取り出したいのが数字ならば、if文でできるのですが 文字列の場合は、どうなんでしょうか。 例えば、「MOJIRETU11」という取り出したいとき 数字と同じようにIF文を使用することは、できるのでしょうか。

  • 謎の文字列置換(正規表現)

    漢字かな、アルファベット(全角)、数字(半角)の混在した文章中で、二桁の数字のみ文字の前後に記号(例:♪)を付けたいとします。 正規表現に対応した置換ソフトやテキストエディタで 置換前:\b(\d{2})\b 置換後:♪$1♪ とすると、特定の文字の後ろにある二桁数字のみ検索から漏れて置換されないのですが、どこが間違っているのでしょうか。 <使用したテキストエディタ> k2editor <使用した置換ソフト> Speeeeed <置換から漏れる特定文字> 学、浜、工、田、修など <具体例>置換前 23 学23 23学 2323 浜23浜 <具体例>置換後 ♪23♪ 学23 ♪23♪学 2323 浜23浜

  • ある文字を含む文字列のみ配列にする方法

    var_dump($text); を行うと array(1) { [0]=> string(XX) "あいさつ" } array(1) { [0]=> string(XX) "いい日旅立ち" } array(1) { [0]=> string(XX) "りんご、うまい" } array(1) { [0]=> string(XX) "メロン好き" } …… となるような変数 $text があり、そこから $key = array("ばなな","りんご","メロン"); の配列内にある文字列を含むものだけを新たに格納したいです。 自分では foreach($text as $value){ if(in_array($value, $key)){ $key_text[] = $value; } } と書いて試したのですが、NULLと返ってきてしまいます。 どうやって書けばいいか教えて下さい。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • DBに半角数字10桁入力すると別数字になります

    phpとphpmyadminを連携しており、フィールドはid(AUTO_INCREMENT)を含め、11項目作成しています。 phpでは9つのフォームがあり、入力された値が2~10つ目のフィールド(すべてint(10))に格納され、11こ目のフィールドはdateで取得した値が入ります。 php上で、生成されたsql文をechoで表示させると、入力したとおりになっているのですが、phpmuadminの中身を見てみると、10桁フルで入力した値が、決まって「2147483647」となっており、困っています。 変数もechoで細かく見てみましたが、どこもおかしなところはありません。 DBに格納された数字のみがおかしなことになっています。 さらに、いろいろ試してみたところ、 1234564757はそのまま 2222222222は2147483647 2222222229は2147483647 4545454545は2147483647 1111111112はそのまま 1111111111はそのまま 2222はそのまま(9桁までの数字の連続なら正常) のような感じで、1の場合は10桁でも変な数字にならず、ほかの数字が連続するときまって2147483647になるようです。 11桁からはプログラムによりエラーが出て再入力を求めるようにしており、11桁以上の場合は正常にエラーが出るので、おかしくなるのは、10桁のときのみです。 格納寸前の変数も直後の変数や$sqlもおかしなところは全くないので、何が狂わせているのかがわからずにいます。 php:5.3.8 mysql:5.5.16 phpmyadmin:3.4.5 Apache:2.2.21 (Win32) つたない説明で分かりづらいかもしれませんが、大変困っておりますので、 何かアドバイス等があれば是非ご教授いただければ幸いです。

    • ベストアンサー
    • MySQL
  • C言語での文字列

    次のようなリストファイル(list.c) 0038 tokyo 004 osaka 0021 fukuoka 0013 aomori . . を一行ずつ読み込んだとき、最初の数字の方だけを表示(または変数に格納) することは出来るのでしょうか? もしくは一文字ずつ読み込んだとして、次の文字がスペースの場合次の行へ… などと言うことも出来るのでしょうか? 2つも質問してますが、何かよいアイディアお聞かせ下さい!

  • ”123456”といった整数を文字列に変換、その後、文字列を1文字ごとに整数に変換 

    忙しい中失礼します。 http://oshiete1.goo.ne.jp/qa3424254.htmlでも質問させて頂いたものですが、 今、回答してくださった方の意見を参考に以下の過程をこなそうとしています。 1.整数入力 →scanf関数を使用し、"123456"と入力します。 2.整数を文字列に変換 → printf("Write the SIN: \n");   scanf("%d", &fnum);   printf("%c\n",fnum); で、"123456"と数値を入力しても”123456”という値が返されず、@となってしまいます。 どうすれば入力した数値が文字列として返ってくるのでしょうか? どんな文・関数を使用すれば数字を文字列として使用することが可能になるのでしょうか? 今のところ習っている文はif else, swith case, while for,do whileで、 getcharやstr?(string)という関数は習っていません。なので、どうプログラムを書けばいいのか??さっぱりなのです。 でもgetcharやstr?(string)という関数を使用するしか方法はないものなのでしょうか?  また、それから 3.文字列を1文字ごとに整数に変換  にする場合、どんな文・関数を使用すれば、1文字”ごと”に整数に変換できるのでしょうか? ごめんなさい、分からないのです。プログラム文、ヒントもしくは参考になるページ等があれば教えて下さい。 よろしくお願いします。 <使用環境:フリーソフト(Borland?)C ANSI C>

  • テキストデータの中の数字列を抽出したい

    宜しくお願い致します。 テキストデータで漢字やひらがな かたかな 数字の混在している文章から 数字だけ 拾い出したいときに つかうVBAの関数のようなものは あるのでしょうか 例えば5桁の数字のみ 抽出したいなど 喩えば 文章中に 1145 123 11456 116699 14523 他漢字かな混じり文が あるとしまして 5桁の11456 と 14523のみ 見つけ出して 表示する方法は 御座いますか

  • UWSCでhtmlソースの文字列を取得したいです

    UWSCで、htmlソースコードの中の数字(1-3桁)を取得したいです。ブラウザはchromeを使う予定です。 取得するページには数字が多く存在するので、前後に固定文を入れて正確に数字を取得したいです。 固定文+取得する数字(1-3桁)+固定文 のように検索をかけたいです。 どのようなプログラムをかけばいいか教えて下さい。 よろしくお願いします。

専門家に質問してみよう