条件・目的
・長さが5以上
・英字と数字の両方を含む必要が有る
・同じ文字を 3 つ以上連続で使用することはできない
入力される値
t
1 ≦ (t の長さ) ≦ 30
文字列 t は半角英字あるいは半角数字で構成された文字列
英字の大文字と小文字は区別する必要はない
文字列が全ての条件を満たす場合のみ"success"
それ以外は全て"fail" と出力する
作成したコード
using System; using System.Text.RegularExpressions; class Program { static bool sameCharactersOverThree(string line) { int charCount = 1; for (int i = 0; i < line.Length - 1; i++) { char c = line[i]; if(c == line[i + 1]) { charCount++; if (charCount >= 3) { return false; } } } return true; } static void Main() { string line = Console.ReadLine(); Regex re = new Regex(@"[0-9]"); Regex ge = new Regex(@"[A-z]"); if (sameCharactersOverThree(line) && re.Matches(line).Count != 0 && ge.Matches(line).Count != 0 && line.Length >= 5) { Console.WriteLine("success"); } else { Console.WriteLine("fail"); } } }
###エラーメッセージ(変更前)
Main.cs(22,8): error CS1525: Unexpected symbol static' Main.cs(22,16): error CS1547: Keyword
void' cannot be used in this context
Main.cs(22,24): error CS1525: Unexpected symbol (' Main.cs(41,0): error CS1525: Unexpected symbol
}'
###追記
修正したらコードが動きました。皆さん本当にありがとうございます。エラーメッセージをしっかり読むべきでした。
paiza.io を使うからです。
Visual Studio を使いましょう。
問題・課題は何なのですか? ある環境(?)では全く動かないからそれを何とかしたい? Visual Studio 2019 でのエラーを何とかしたい? 正規表現を知りたい?
このご質問には2つのテーマがあって
1. コンパイルエラーを取る。>正しい文法でコードを書き、とにかく動くようにする。
2. 「長さ5以上、英数字を含む、同じ文字を3つ以上連続で使用してはならない文字列」を検出する。
がありますが、質問としては1. で良いですか?
こういうご質問で往々にしてあるのが「コンパイルエラーは無くなりましたが、答えが間違っています。どうしたらよいですか?」と続くことです。コンパイルエラーがあるので何とも、ですが"aa1bb2aa3"のような文字列で「3つ以上連続する文字」を正しく検出できていないと思います。
はい、質問の内容は1.です。文字列が一つ与えられるのですが、それが条件を満たしているかを判定するプログラムを作成したいのです。質問が曖昧で申し訳ありません。
paiza.io を使うからです。
あと、文字を読まないから。
例えば、"8Mw2ehvvvvy"のような文字列では英数字を含み、5文字以上なのでこれらの条件は満たしていますが3つ以上の同じ文字を含んでいるため"fail"となります。全ての条件を満たす場合のみ"success"と表示するようにしたいです。ただ、まずはやはりコンパイルエラーをどうにかしなくてはなりません。
どこで見つけてきたんだこの変なテンプレート。
> はい、質問の内容は1.です。
質問文を編集してその旨書いてください。
> Main.cs(22,8): error CS1525: Unexpected symbol static'
エラーメッセージにはここで static は使えないと、こう書いてある。
ならば質問のタイトルはこれを問うものでなければならない。
> 長さ5以上、英数字を含む、同じ文字を3つ以上連続で使用してはならない文字列
現在のタイトルはこれ。
直面している問題に何の関係もない。
だから質問の意味を問われている。
結局、初心者かどうかではなく、国語力の問題。
親切に行番号まで書いてあるのに、どこに問題があるかを把握できてない。
この程度の問題なら、中学生の初心者でも自分で余裕で直せる。
日本語レベルでダメな質問ということが認識できないのかな?
回答2件
あなたの回答
tips
プレビュー