Stringの配列がうまく作動しません

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
あい

Stringの配列がうまく作動しません

#1

投稿記事 by あい » 1年前

Visual StudioでC#を用いてシステムの開発を行っています。
学校でプログラミングを習っただけの初心者です。

コード:

            for(int k=0; k < n; k++)
            {
                string[] list = { "医療分野の環境","患者満足と地域社会への貢献","医療の質の基本的考え方","医療の質・安全","医療安全の基本的考え方","顧客","製品・サービス","文書化と文書管理","文書の朱里","文書の体系","文書管理の方法","医療の質とモノの管理の関係","日常管理の実施方法","問題解決の手法"};
                string item = 実研修.M研修.Rows[k]["中項目名"].ToString();
                int m = Array.IndexOf(list, item)+1;
                Debug.WriteLine(item);
                Debug.WriteLine(k);
                Debug.WriteLine(m);
                Debug.WriteLine(Array.IndexOf(list, item));
                dgvQ項目.Rows[m].Cells[l].Value = "〇";
                l++;
            }
            
下記はコンソールに表示されたものです。


医療の質・安全
0
4
3
文書の朱里

1
0
-1
問題解決の手法

2
0
-1

簡単に言うと下記のような動作を行っています。
①実研修.M研修.Rows[k]["中項目名"].ToString();の部分でデータベースから中項目名を取得する
②配列から取得した中項目名のインデックス番号を取得する
③インデックス番号をもとにシステムのデータグリッドビューの行番号を指定する
「医療の質・安全」という中項目名は配列からインデックス番号を取得できましたが、他の中項目名は取得できませんでした。

また、
foreach (char ch in item) { Debug.WriteLine((int)ch); }
で確認したところ、ご指摘の通り文字列の末尾にLF(改行)とCR(復帰)が含まれておりました。

どのように解決できるのでしょうか?ご教示いただきたいです

あい

Re: Stringの配列がうまく作動しません

#2

投稿記事 by あい » 1年前

追記

配列内に/r/nを入れることで上記の問題は解決しましたが、中項目名に複数の項目が入っている場合、完全一致にならないためArray.IndexOfで不一致となってしまいます。
どのように解決できるのかご教示いただきたいです。

アバター
あたっしゅ
記事: 664
登録日時: 13年前
住所: 東京23区
連絡を取る:

Re: Stringの配列がうまく作動しません

#3

投稿記事 by あたっしゅ » 1年前

東上☆海美☆「
> ご指摘の通り文字列の末尾にLF(改行)とCR(復帰)が含まれておりました。

誰に、指摘されたのですか ?


> Visual StudioでC#を用いてシステムの開発を行っています。

仕事でやってんなら、まず、上司に聞けば ?
VTuber:
東上☆海美☆(とうじょう・うみみ)
http://atassyu.php.xdomain.jp/vtuber/index.html
レスがついていないものを優先して、レスするみみ。時々、見当外れなレスしみみ。

中の人:
手提鞄あたッしュ、[MrAtassyu] 手提鞄屋魚有店
http://ameblo.jp/mratassyu/
Pixiv: 666303
Windows, Mac, Linux, Haiku, Raspbery Pi, Jetson Nano, 電子ブロック 持ち。

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: Stringの配列がうまく作動しません

#4

投稿記事 by みけCAT » 1年前

あい さんが書きました:
1年前
配列内に/r/nを入れることで上記の問題は解決しました
配列内に/r/n (原文ママ) を入れるより、
取得したitemから余計なデータを取り除いてから検索した方がいい気がします。
あい さんが書きました:
1年前
中項目名に複数の項目が入っている場合、完全一致にならないためArray.IndexOfで不一致となってしまいます。
どのように解決できるのかご教示いただきたいです。
「中項目名に複数の項目が入っている場合」とは具体的にどのような状態かよくわからないですが、
データ構造に対応するプログラムで項目ごとに分割し、1個ずつ検索するといいかもしれません。
オフトピック
そもそも、毎回配列から線形探索するのではなく、
最初に配列から「文字列 → インデックス番号」の連想配列を作り、
その連想配列を使ってインデックス番号を求めるようにした方が効率がいいかも…?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

返信

“C言語何でも質問掲示板” へ戻る