C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: 文字列の中から数字だけ取り出すには?


(過去ログ 85 を表示中)

[トピック内 12 記事 (1 - 12 表示)]  << 0 >>

■50341 / inTopicNo.1)  文字列の中から数字だけ取り出すには?
  
□投稿者/ OBK48 (1回)-(2010/06/04(Fri) 00:16:25)

分類:[.NET 全般] 

よろしくお願いします。

VB.NETなのですが、
str = "あかさたなはま20100711やわらちゃんさんぎいん"
などの文字列が代入されているとき数字だけ取り出せないものでしょうか?

文字数が安定していればRightとかLeftでいいのですが文字列が可変であるため困っています。
どうかよろしくお願いいたします。

引用返信 編集キー/
■50342 / inTopicNo.2)  Re[1]: 文字列の中から数字だけ取り出すには?
□投稿者/ よねKEN (516回)-(2010/06/04(Fri) 00:45:51)
よねKEN さんの Web サイト
No50341 (OBK48 さん) に返信
> VB.NETなのですが、
> str = "あかさたなはま20100711やわらちゃんさんぎいん"
> などの文字列が代入されているとき数字だけ取り出せないものでしょうか?

http://bbs.wankuma.com/index.cgi?mode=al2&namber=37772&KLOG=65
にちょうどよいヒントがあります。
引用返信 編集キー/
■50344 / inTopicNo.3)  Re[1]: 文字列の中から数字だけ取り出すには?
□投稿者/ 渋木宏明(ひどり) (1351回)-(2010/06/04(Fri) 01:02:14)
渋木宏明(ひどり) さんの Web サイト
2010/06/04(Fri) 01:03:43 編集(投稿者)

基本的には、正規表現を使えば比較的カンタンに出来そうです。

が、前提をもう少し明確にして下さい。

数字列は、文字列中に1つしか出現しないんですか?

複数出現する場合、どれを取り出したいですか? 全部を順番に?
引用返信 編集キー/
■50345 / inTopicNo.4)  Re[2]: 文字列の中から数字だけ取り出すには?
□投稿者/ OBK48 (2回)-(2010/06/04(Fri) 01:06:19)
返信をいただきまして誠にありがとうございます。
複数ある場合は全部を順番にです。
上記例であれば「20100711」とです。

もし
「あ1いう3え4お56789」であれば「123456789」といった感じです
引用返信 編集キー/
■50349 / inTopicNo.5)  Re[3]: 文字列の中から数字だけ取り出すには?
□投稿者/ ちゃっぴ (23回)-(2010/06/04(Fri) 02:59:44)
ちゃっぴ さんの Web サイト
正規表現使って、数字を group match してやって、結果として得た SubMatch を文字列結合。
引用返信 編集キー/
■50353 / inTopicNo.6)  Re[3]: 文字列の中から数字だけ取り出すには?
□投稿者/ よねKEN (517回)-(2010/06/04(Fri) 07:53:20)
よねKEN さんの Web サイト
2010/06/04(Fri) 10:56:50 編集(投稿者)

No50345 (OBK48 さん) に返信
> 返信をいただきまして誠にありがとうございます。
> 複数ある場合は全部を順番にです。
> 上記例であれば「20100711」とです。

必要な情報は最初の投稿のURLにあります(C#ですが)ので、参考にしてください。

> 「あ1いう3え4お56789」であれば「123456789」といった感じです

(案1) Regex.Replaceで0〜9以外を""に置き換え
(案2) 1文字目から最後まで1文字ずつ、Like演算子で数字かどうかチェックして、数字部分だけを文字列変数に結合していく

辺りが簡単だと思います。

--
<修正箇所>
RegEx.Replace → Regex.Replace
※大文字Eを小文字に
</修正箇所>

引用返信 編集キー/
■50354 / inTopicNo.7)  Re[4]: 文字列の中から数字だけ取り出すには?
□投稿者/ こん (22回)-(2010/06/04(Fri) 08:57:47)
文字数分ループして、midで一文字取り出しIsNumericで判別。
Trueだったら数値格納用変数に連結していく。

とかどうでしょう。
引用返信 編集キー/
■50355 / inTopicNo.8)  Re[5]: 文字列の中から数字だけ取り出すには?
□投稿者/ みきぬ (912回)-(2010/06/04(Fri) 09:41:53)
2010/06/04(Fri) 10:29:40 編集(投稿者)

いわゆる全角の数字は対象に含めちゃってもええんでしょうか。

.NET Framework 3.5 以降限定だけど、

(案3) "あ1い2う3え4お56789".Where(Test)
ただし、Test() は Char 値が条件を満たす場合に True を返す Funtcion

引用返信 編集キー/
■50356 / inTopicNo.9)  Re[6]: 文字列の中から数字だけ取り出すには?
□投稿者/ 渋木宏明(ひどり) (1352回)-(2010/06/04(Fri) 10:33:19)
渋木宏明(ひどり) さんの Web サイト
2010/06/04(Fri) 10:44:38 編集(投稿者)
C# で LINQ 使って書くとこんな感じ。

VB 版は、きっと誰かが書いてくれるでしょう。

ロジック的には、ちゃっぴさんが書いてた

>正規表現使って、数字を group match してやって、結果として得た SubMatch を文字列結合。

をまんまコードにしただけです。

using System;
using System.Linq;
using System.Text.RegularExpressions;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            string text = "あ1いう3え4お56789";

            Console.WriteLine(
                string.Concat(Regex.Matches(text, @"\d+").Cast<Match>().Select(_ => _.Value).ToArray()));
        }
    }
}

引用返信 編集キー/
■50362 / inTopicNo.10)  Re[1]: 文字列の中から数字だけ取り出すには?
□投稿者/ いしだ (228回)-(2010/06/04(Fri) 11:24:57)
2010/06/04(Fri) 11:27:28 編集(投稿者)

> str = "あかさたなはま20100711やわらちゃんさんぎいん"
> などの文字列が代入されているとき数字だけ取り出せないものでしょうか?
>
よねKEN さんの案1が簡単じゃないでしょうか。

C#ですが、
Regex.Replace(str, @"[^\d]", "");

引用返信 編集キー/
■50368 / inTopicNo.11)  Re[2]: 文字列の中から数字だけ取り出すには?
□投稿者/ 渋木宏明(ひどり) (1353回)-(2010/06/04(Fri) 12:31:21)
渋木宏明(ひどり) さんの Web サイト
> Regex.Replace(str, @"[^\d]", "");

そっか (^^; そりゃそうですねw
引用返信 編集キー/
■50415 / inTopicNo.12)  Re[3]: 文字列の中から数字だけ取り出すには?
□投稿者/ OBK48 (4回)-(2010/06/06(Sun) 23:15:50)
教えていただきましてありがとうございます。
なんとかできました。
正規表現を用いればいいということですね
目的のものが作れてうれしいです

参考になりました
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -