!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください
>>980を踏んだ人は新スレを建てて下さい。>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■前スレ
ふらっと C#,C♯,C#(初心者用) Part145
https://mevius.5ch.net/test/read.cgi/tech/1570446977/
■関連スレ
C#, C♯, C#相談室 Part95
https://mevius.5ch.net/test/read.cgi/tech/1508168482/
■コードを貼る場合は↓を使いましょう。
http://ideone.com/
https://dotnetfiddle.net/
■情報源
https://docs.microsoft.com/ja-jp/dotnet/standard/class-libraries
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/index
https://docs.microsoft.com/en-us/dotnet/standard/class-libraries
http://referencesource.microsoft.com/
・Insider.NET > .NET TIPS - @IT
https://www.atmarkit.co.jp/ait/subtop/features/dotnet/dotnettips_index.html
・DOBON.NET .NET Tips
https://dobon.net/vb/dotnet/index.html
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
ふらっと C#,C♯,C#(初心者用) Part146
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 9f0b-Fgt1)
2019/12/11(水) 22:12:11.28ID:d09CciDz02デフォルトの名無しさん (ワッチョイ 1524-Fgt1)
2019/12/11(水) 22:32:15.34ID:mMKqVbip0 C#
3デフォルトの名無しさん (ワイーワ2 FFfa-uKDx)
2019/12/12(木) 09:41:18.58ID:a67Hqgb2F O2
4デフォルトの名無しさん (ワッチョイ 06b0-DoXq)
2019/12/12(木) 14:29:42.64ID:56xY8w560 ひらがな文字列をヘボン式ローマ字に変換するプログラム作りたいのですが
やっぱ正攻法でswitch-caseで123個くらい分岐させますか?
でも長音や促音の例外処理とか難しそうだなあ・・・
やっぱ正攻法でswitch-caseで123個くらい分岐させますか?
でも長音や促音の例外処理とか難しそうだなあ・・・
5デフォルトの名無しさん (エムゾネ FF02-uKDx)
2019/12/12(木) 14:47:29.26ID:b3wcvAqBF 変換テーブルと検索
6デフォルトの名無しさん (ワッチョイ e242-xO71)
2019/12/12(木) 17:38:52.89ID:OYDho7HG0 UNIXのShellのソースでコマンドを切り分ける場所では思いっきりswitch文の嵐だったな
1文字目でまず切り分けで、次にに文字目ってな具合で
速度なら圧倒的にswitch分だと思うが、作りやすかったり保守が簡単なのはDictionary使ったパターンだと思う
1文字目でまず切り分けで、次にに文字目ってな具合で
速度なら圧倒的にswitch分だと思うが、作りやすかったり保守が簡単なのはDictionary使ったパターンだと思う
7デフォルトの名無しさん (ワッチョイ ef24-xO71)
2019/12/12(木) 17:42:49.22ID:NIaj3T140 要素数が多くなれば多くなる程switch文よりDictionaryの方が速度的にも早くなるのでは?
8デフォルトの名無しさん (ワッチョイ 5701-2Uq8)
2019/12/12(木) 17:52:34.02ID:VQC2yHD50 つ libstree
9デフォルトの名無しさん (ドコグロ MMab-oPxD)
2019/12/12(木) 18:32:36.61ID:Ijd1d2r8M10デフォルトの名無しさん (ワッチョイ 06b0-DoXq)
2019/12/12(木) 19:09:09.93ID:56xY8w56011デフォルトの名無しさん (ワッチョイ 8b45-6Mij)
2019/12/12(木) 19:47:35.25ID:XSG0K+ND0 vs2017ExpressでC#のフォームを使ってSQLiteのデータをDataGridViewに表示させたいです
セキュリティの関係でSystem.data.SQLiteを使うには申請が必要でMicrosoft.data.SQLiteを使っています
SQLiteをデータソース欄に追加する方法を教えてもらえないでしょうか?
セキュリティの関係でSystem.data.SQLiteを使うには申請が必要でMicrosoft.data.SQLiteを使っています
SQLiteをデータソース欄に追加する方法を教えてもらえないでしょうか?
12デフォルトの名無しさん (ワッチョイ 8b45-6Mij)
2019/12/12(木) 21:16:54.09ID:XSG0K+ND013デフォルトの名無しさん (アウウィフ FF3b-EbeN)
2019/12/13(金) 10:16:06.63ID:V90d9jYdF いくら払えますか
14デフォルトの名無しさん (スプッッ Sd2f-6Mij)
2019/12/13(金) 11:41:55.37ID:D/hLKfPDd >>13
自宅でSystem.data.SQLiteをインストールして同じコードを書いたらデータベースに接続出来ました
恐らくSQLiteConnection等の参照が足りずにエラーなっていると思いますが、解決策が思い浮かばなかったのでSQL Serverを使って試したいと思います
申し訳ありません
自宅でSystem.data.SQLiteをインストールして同じコードを書いたらデータベースに接続出来ました
恐らくSQLiteConnection等の参照が足りずにエラーなっていると思いますが、解決策が思い浮かばなかったのでSQL Serverを使って試したいと思います
申し訳ありません
15デフォルトの名無しさん (スフッ Sd02-cBt2)
2019/12/13(金) 12:10:09.33ID:SSw9bcJtd Microsoft Visual Studio International Feature Pack を使うんだ!
KanaConversion クラスだったかに RomajiToHiragana メソッドがあったと思う
KanaConversion クラスだったかに RomajiToHiragana メソッドがあったと思う
16デフォルトの名無しさん (ブーイモ MM13-RobM)
2019/12/13(金) 17:23:20.97ID:f86+e1mZM >>10
亀レスで申し訳ないが、正規表現と Dictionary と LINQ を使えば 5 行くらいで書けるよ。
var kana = “あ|い|う|え|お|か|き|く|け|こ”;
var roman = “A|I|U|E|O|Ka|Ki|Ku|Ke|Ko”;
var dic = kana.Split(‘|’).Zip(roman.Split(‘|’), (l, r) => new { Key = l, Value = r}).ToDictionary( x => x.Key, x => x.Value );
Console.WriteLine(Regex.Replace(original_string, $”({kana})”, match => dic[match.Value]));
亀レスで申し訳ないが、正規表現と Dictionary と LINQ を使えば 5 行くらいで書けるよ。
var kana = “あ|い|う|え|お|か|き|く|け|こ”;
var roman = “A|I|U|E|O|Ka|Ki|Ku|Ke|Ko”;
var dic = kana.Split(‘|’).Zip(roman.Split(‘|’), (l, r) => new { Key = l, Value = r}).ToDictionary( x => x.Key, x => x.Value );
Console.WriteLine(Regex.Replace(original_string, $”({kana})”, match => dic[match.Value]));
17デフォルトの名無しさん (ブーイモ MM13-RobM)
2019/12/13(金) 17:33:03.63ID:f86+e1mZM あとは 50 音を全パターン書いてね。
ただし注意点があって、長いワードは短いワードよりも (例えば「ちょ」は「ち」よりも) 先に並べるんだ。
そうしないと短いワードが先に部分マッチしてしまう。
ただし注意点があって、長いワードは短いワードよりも (例えば「ちょ」は「ち」よりも) 先に並べるんだ。
そうしないと短いワードが先に部分マッチしてしまう。
18デフォルトの名無しさん (スップ Sd22-aD55)
2019/12/13(金) 17:47:39.93ID:s9cNxHbdd テーブル作る前提なら始めからdictionary作ればよくね?
19デフォルトの名無しさん (スップ Sd22-aD55)
2019/12/13(金) 17:49:41.61ID:s9cNxHbdd 一文字ずつ正規表現でマッチしてたらとんでもなく時間食いそうだな
姓名の変換くらいならどうとでもなるだろうけど
姓名の変換くらいならどうとでもなるだろうけど
20デフォルトの名無しさん (ブーイモ MMdb-RobM)
2019/12/13(金) 18:16:48.88ID:RrhzxBUdM21デフォルトの名無しさん (ワッチョイ c788-aD55)
2019/12/13(金) 18:33:49.64ID:KAf60mjk0 まったくスッキリしてない
圧倒的にswitchが早い
圧倒的にswitchが早い
22デフォルトの名無しさん (ブーイモ MMdb-RobM)
2019/12/13(金) 18:44:01.44ID:8Ub64SZCM >21
それは感情論だな。計時してみてくれよ。
Perl, JavaScript, Java, C# で正規表現を使うこと 30 年弱になるけど、パターンの複雑さによらず、正規表現が目に見えて遅いということはなかったな。
アセンブラでゴリゴリに最適化したものと比べたら遅いだろうが、同じ言語のユーザー定義関数より目に見えて遅いことはまあないと思うよ。
それは感情論だな。計時してみてくれよ。
Perl, JavaScript, Java, C# で正規表現を使うこと 30 年弱になるけど、パターンの複雑さによらず、正規表現が目に見えて遅いということはなかったな。
アセンブラでゴリゴリに最適化したものと比べたら遅いだろうが、同じ言語のユーザー定義関数より目に見えて遅いことはまあないと思うよ。
23デフォルトの名無しさん (スププ Sd02-qWAV)
2019/12/13(金) 18:48:06.09ID:04gYwNVod これならDictionary作るわ
24デフォルトの名無しさん (ブーイモ MMdb-RobM)
2019/12/13(金) 18:51:56.74ID:8Ub64SZCM25デフォルトの名無しさん (ワッチョイ c788-aD55)
2019/12/13(金) 19:49:57.23ID:KAf60mjk0 2文字置換を考慮したらスッキリは書けなかった
すまんこ
こんなクソみたいなコードでもregexよりは数倍早い
https://ideone.com/c7ILX4
頭良い人がもっとスッキリしたコード書いてくれそう
長文のほうがreplaceは不利だろうから数千文字にしたけどそれでも余裕
速度気にしないならregexで良いと思う
すまんこ
こんなクソみたいなコードでもregexよりは数倍早い
https://ideone.com/c7ILX4
頭良い人がもっとスッキリしたコード書いてくれそう
長文のほうがreplaceは不利だろうから数千文字にしたけどそれでも余裕
速度気にしないならregexで良いと思う
26デフォルトの名無しさん (ワッチョイ c788-aD55)
2019/12/13(金) 19:58:53.60ID:KAf60mjk0 最終文字が2文字置換対象じゃないときにsubstringで範囲外例外出るわ
条件1個追加しといて
条件1個追加しといて
27デフォルトの名無しさん (スップ Sd22-aD55)
2019/12/13(金) 20:57:05.81ID:9t702OJgd 小さい「っ」が未対応なことに気付いた
これ正規表現でもめんどいね
正規表現ならっを無視してreplaceした後に1個ずつ置換かなぁ
これ正規表現でもめんどいね
正規表現ならっを無視してreplaceした後に1個ずつ置換かなぁ
28デフォルトの名無しさん (ワッチョイ e752-RobM)
2019/12/13(金) 21:07:14.03ID:M1n71JyZ0 多少簡略化したロジックで計測してみた。
マッチ文字列が 1 文字固定なら、ユーザー定義関数の方が正規表現より 8 倍速かったが、1 〜 2 文字可変なら所要時間は同じ。
パターンマッチの文字列長が可変・複雑になるとそれをハンドルするための分岐が増えるせいでユーザー定義関数は遅くなる。
もちろん置換をかけるオリジナル文字列の文字出現パターン&確率にもよる。
チューニングするなら C やアセンブラで書くべきだし、C# で書くなら正規表現で簡潔に書けるほうがよいのでは?
マッチ文字列が 1 文字固定なら、ユーザー定義関数の方が正規表現より 8 倍速かったが、1 〜 2 文字可変なら所要時間は同じ。
パターンマッチの文字列長が可変・複雑になるとそれをハンドルするための分岐が増えるせいでユーザー定義関数は遅くなる。
もちろん置換をかけるオリジナル文字列の文字出現パターン&確率にもよる。
チューニングするなら C やアセンブラで書くべきだし、C# で書くなら正規表現で簡潔に書けるほうがよいのでは?
29デフォルトの名無しさん (ワッチョイ e752-RobM)
2019/12/13(金) 21:12:22.88ID:M1n71JyZ030デフォルトの名無しさん (ワッチョイ ef63-aD55)
2019/12/13(金) 21:22:02.14ID:VulPdUq80 どうあがいてもregexは遅くないという結論にしたいみたいだけど
string単体で見ても遅いのにregexが遅くないわけがない
簡潔に書くならregexがスマートなパターンが多いのは分かってるよw
処理速度求められるパーサーなんかではまずregexなんか使わない
遅いと言っても数万文字の処理が何万回も必要とかでなければ気にするようなレベルではないので問題ないなら素直にregex使ったほうが良いよ
25ですでにそう言ってるしね
string単体で見ても遅いのにregexが遅くないわけがない
簡潔に書くならregexがスマートなパターンが多いのは分かってるよw
処理速度求められるパーサーなんかではまずregexなんか使わない
遅いと言っても数万文字の処理が何万回も必要とかでなければ気にするようなレベルではないので問題ないなら素直にregex使ったほうが良いよ
25ですでにそう言ってるしね
31デフォルトの名無しさん (ワッチョイ e752-RobM)
2019/12/13(金) 21:26:23.93ID:M1n71JyZ0 あるいはワンショットで置換するなら、下記のようなパターンを使って後方参照し、第1マッチ文字列が空でないなら、第2マッチ文字列の置換先の1文字目に置換するとか。
(っ?)(あ|い|う|え|お|か|き|く|け|こ)
(っ?)(あ|い|う|え|お|か|き|く|け|こ)
32デフォルトの名無しさん (アウアウイー Sa1f-f14Z)
2019/12/13(金) 21:26:56.26ID:yXJ+I/RUa 「ンョ゛ハー ゛」みたいなのが来た時の対応とか考え出すと仕様肥大化するだろうなあ
ひらがなカタカナ両対応とか、半角カナとか、
長音の代わりにハイフン使いだした場合とか
「ヴァッソ」とか
テストパターン考えるのも厄介そうだね
ひらがなカタカナ両対応とか、半角カナとか、
長音の代わりにハイフン使いだした場合とか
「ヴァッソ」とか
テストパターン考えるのも厄介そうだね
33デフォルトの名無しさん (ワッチョイ 5f01-uKDx)
2019/12/13(金) 21:30:11.16ID:0IHjBlJG0 LALRを受理するジェネレータ書いたことがあるんだけど、状態表の大きさは字句解析のほうが遥かに大きくなるのが普通みたいですよ。
字句解析と構文解析は一つの表にまとめられるのに、なぜ分けるのかというのが最初の疑問だけど、なぜか答えが載ってる本が無い。
実際にやってみると表の大きさが爆発的に大きくなるからでした。
状態機械は分けられる箇所があるなら積極的に分けたほうが効率的になるようです。
字句解析と構文解析は一つの表にまとめられるのに、なぜ分けるのかというのが最初の疑問だけど、なぜか答えが載ってる本が無い。
実際にやってみると表の大きさが爆発的に大きくなるからでした。
状態機械は分けられる箇所があるなら積極的に分けたほうが効率的になるようです。
34デフォルトの名無しさん (ワッチョイ e752-RobM)
2019/12/13(金) 21:30:12.87ID:M1n71JyZ0 >>30
文字列操作だからもちろん絶対的には遅いよ。
C# で書いたユーザー定義関数と比べたときに正規表現が相対的にそんなに不利かといったらそうではないだろうという予想を立てただけで。実際測ったら同等だったわけだけど。
文字列操作だからもちろん絶対的には遅いよ。
C# で書いたユーザー定義関数と比べたときに正規表現が相対的にそんなに不利かといったらそうではないだろうという予想を立てただけで。実際測ったら同等だったわけだけど。
35デフォルトの名無しさん (ワッチョイ 5701-2Uq8)
2019/12/13(金) 21:30:26.83ID:7oWhly6q0 日経だったか「むかっっ」という促音が
重なる文章というか記事があったな
重なる文章というか記事があったな
36デフォルトの名無しさん (ワッチョイ 5f01-uKDx)
2019/12/13(金) 21:33:36.65ID:0IHjBlJG0 字句解析におけるNFA対DFAというのも最初に気になる部分です。
結論から言うと、NFAの選択は十分に考慮できるはずです。
僕も最初はDFAにこだわっていました。
でも、字句解析は表が大きくなりがちです。
特にregex並みの便利機能を組み込もうとすると、とても大きくなります。
たいていはNFAで十分かと思います。
結論から言うと、NFAの選択は十分に考慮できるはずです。
僕も最初はDFAにこだわっていました。
でも、字句解析は表が大きくなりがちです。
特にregex並みの便利機能を組み込もうとすると、とても大きくなります。
たいていはNFAで十分かと思います。
37デフォルトの名無しさん (ワッチョイ 5f01-uKDx)
2019/12/13(金) 21:37:02.69ID:0IHjBlJG0 ちなみに、DFAにこだわる理由は、多くの本がDFAのほうが効率的と述べているからです。
みんなそうだと思います。
最悪のケースではその通りですし、最悪のケースを考慮するのはセキュリティにも関わります。
でも最悪のケースはめったになく、たいていはNFAで十分で、たいていは効率的だと思います。
みんなそうだと思います。
最悪のケースではその通りですし、最悪のケースを考慮するのはセキュリティにも関わります。
でも最悪のケースはめったになく、たいていはNFAで十分で、たいていは効率的だと思います。
38デフォルトの名無しさん (ワッチョイ ef63-aD55)
2019/12/13(金) 21:39:05.74ID:VulPdUq80 >>34
その同等だったっていうコード貼ってくれない?
25で貼ったコードで1文字2文字の比率変えてもregex側が常に3〜4倍くらい遅いんだよね
古い.NETだとsubstringが遅いとかあった気がするんだけどその影響じゃないよね?
その同等だったっていうコード貼ってくれない?
25で貼ったコードで1文字2文字の比率変えてもregex側が常に3〜4倍くらい遅いんだよね
古い.NETだとsubstringが遅いとかあった気がするんだけどその影響じゃないよね?
39デフォルトの名無しさん (ワッチョイ e752-RobM)
2019/12/13(金) 21:42:16.88ID:M1n71JyZ0■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「1800万円の売り上げゼロに…」中国インバウンドに特化の宿の今 ★2 [蚤の市★]
- 最新版Z級クソ映画ランキングが決定! [牛丼★]
- 公用車カーナビのNHK受信料「全額免除を」 千葉市議会、国に制度創設求める意見書可決 [少考さん★]
- 【食】「シャウエッセンは焼くべからず」暗黙のルールを破り売上高過去最高…日本ハム社員たちが「夜味」にかけた情熱 [ぐれ★]
- 【音楽】松山千春、女性っぽい名前に親恨んだ「名簿には必ず女の方に入ってる。情けなかったりもしたけどね」 [湛然★]
- 神田沙也加さん元恋人で元俳優の前山剛久 六本木のメンズラウンジ勤務を報告「真叶(まなと)です。よろしく」 [muffin★]
- どこだ?強ええええバキぼんやは????
- ( ´・ω・` )どいてもらえます?
- 【埼玉】34歳無職、置き配📦を盗みまくる!その数、400点!😱 [718678614]
- 俺の評価が「根暗」「殺し屋」「ADHD」「サイコパス」なんだが酷すぎん?
- 福井県民に頭おかしくされて悔しいからスレ立て
- 米国株大暴落!!!NISA含み損www [252835186]
