
visual studio 2005 C#で
指定文字数による文字列分割をしたいのですが
何とか正規表現で一発で書けないかと考えております。
指定文字数による文字列分割は、ちょっと言い方が分からないので、下の例をみていただければ、と思います。
例えば指定文字数が2文字の場合
"あいうえお"を以下のような配列で取得したいです。
[0]"あい"
[1]"いう"
[2]"うえ"
[3]"えお"
例えば指定文字数が3文字の場合
[0]"あいう"
[1]"いうえ"
[2]"うえお"
これを
[0]"あい"
[1]"うえ"
というような分割はできるのですが、上記のような重複した感じでの取得ができません。
MatchCollection mc = Regex.Matches("あいうえお", "..");
ちょっと言い方が下手で分かりにくいかもしれませんが、よろしくお願いいたします。
No.3ベストアンサー
- 回答日時:
.NETの現行の正規表現の仕様では多分できません。
というのも、たとえば(先頭から)2文字マッチさせると注目点は
マッチしただけ移動しますが、要求されている動作では注目点は1文字しか
移動してはいけないことになるからです。
Perl6で導入が予定されている :ov (:overlap) 修飾子があれば
お望みの動作ができるかもしれません。
参考URL:http://svn.perl.org/perl6/doc/trunk/design/syn/S …
No.2
- 回答日時:
これってむしろsubstringでやった方がいいんじゃないかと思ったりw
ありがとうございます。
今組んでいるプログラムの方ではsubstringで実装したいと思います。
ただ、正規表現で表現できるかどうかは気になりますので、引き続き掲示とさせていただきます。
No.1
- 回答日時:
下記のように行えば言っているとおりの実装が可能ですが?
正規表現を使ってという方法は思いつきません。
string a="あいうえお"; //対象の文字列
int b=2; //指定文字数
string[] c= new string[a.Length-(b-1)]; //格納用配列
for(int i= 0;i<a.Length-(b-1) ;i++)
{
c[i] = a.Substring(i,b);
}
ありがとうございます。
仰るとおりfor文等でやった方がよさそうですね。
「これって正規表現で一発でいけるのかな?」と思い立って、質問させていただいた次第です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
人気Q&Aランキング
-
4
C言語の課題で困っています;
-
5
TCL言語で文字列検索方法を教え...
-
6
char型配列の最大要素数
-
7
アルファベットの出て来た回数
-
8
c言語によって文字列を逆順する...
-
9
こんなことって可能なのですか...
-
10
Shift_JIS(16進)を文字に変換す...
-
11
シリアル通信で0x00を送信した...
-
12
アルファベットをカウント、
-
13
数字の入った配列をファイルへ...
-
14
16進数を2文字ずつ配列に格納し...
-
15
括弧が含まれる文字列の括弧の...
-
16
Cでは文字列をどのように認識す...
-
17
WSH(VBS)でJSONの文字列を読み...
-
18
int型での文字列の扱いについて
-
19
バイナリファイル中の日本語文...
-
20
C++で文字列の右端から特定の文...
おすすめ情報
公式facebook
公式twitter