質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

検索

検索は、あるデータの集まりの中から 目的のデータを見つけ出すことです。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

3回答

12174閲覧

VBで配列の中の要素を部分一致で探したい

syameimaru

総合スコア181

VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

検索

検索は、あるデータの集まりの中から 目的のデータを見つけ出すことです。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2017/07/25 04:29

編集2018/04/05 05:50

###前提・実現したいこと
VBでCVSのデータを配列の中に入れています。

この配列の中に「○○を含む」というような形で検索を行い、見つかった場合「○○」だけを削除して、
結果的にどこにも「○○」という文字列が存在しない配列ができるようにしたいです。

###該当のソースコード

VB

1 Dim txtParser As FileIO.TextFieldParser = 2 New FileIO.TextFieldParser( 3 "C:\Users\csv.csv", 4 System.Text.Encoding.GetEncoding("shift_jis")) 5 6 '内容は区切り文字形式 7 txtParser.TextFieldType = 8 FileIO.FieldType.Delimited 9 10 'デリミタはカンマ 11 txtParser.SetDelimiters(",") 12 Dim i As Object = Nothing 13 i = 0 14 'ファイルの終わりまで一行ずつ処理 15 While Not txtParser.EndOfData 16 17 '一行を読み込んで配列に結果を受け取る 18 Dim splittedResult As String() = txtParser.ReadFields() 19 Dim index1 As Integer = Array.IndexOf(splittedResult, "検索したい文字列") 20 MsgBox(index1) 21

###試したこと
Dim index1 As Integer = Array.IndexOf(splittedResult, "検索したい文字列")

Dim index1 As Integer = Array.IndexOf(splittedResult, "" & "検索したい文字列" & "")

###補足情報(言語/FW/ツール等のバージョンなど)
splittedResultが配列の名前です。
visual studio 2015
言語 VB

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

個々のデータを配列の要素に代入する際に、String.Replaceメソッドを使って、"○○"を""に置換する(結果として、○○が削除される)のが単純で素直な方法ではないでしょうか。

投稿2017/07/25 07:30

coco_bauer

総合スコア6915

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

syameimaru

2017/07/25 07:32

回答ありがとうございます 次回からこの方法を使いたいと思います
guest

0

自己解決

私の場合、最終的にはラベルに貼り付けたかったので
配列の中身をラベルか何かに貼り付けて
For i = 0 To 53
Dim s As String = label(i).Text
label(i).Text = s.Replace("変換したい文字列", "")
Next
で、変換しました。

投稿2017/07/25 07:00

編集2017/07/25 07:01
syameimaru

総合スコア181

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

配列の中身をIndexOfで文字列の部分検索をした後、
その得られた結果の一致部分を削除して表示ということでしょうか。

Replaceで一致文字列を""に置換してみてはどうでしょうか

https://dobon.net/vb/dotnet/string/replace.html

投稿2017/07/25 04:37

King_of_Flies

総合スコア382

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

syameimaru

2017/07/25 04:43

回答ありがとうございます。 この方法で一度試してみます。
syameimaru

2017/07/25 04:50 編集

Dim index1 As Integer = splittedResult.Replace("<", "") で試してみたのですが splittedResult.Replaceの下に赤波線で'Replace'は'string()'のメンバーではありませんというエラーが出てしまいます。 やり方が間違っていたら教えてください よろしくお願いします。
syameimaru

2017/07/25 04:54

String.Replaceメソッドは置換された結果の文字列を返しますが、基のStringの内容は変更されないことに注意してください。 というようなことがリンク先に書かれていたのですが、配列の内容は変更されないということなのでしょうか?
King_of_Flies

2017/07/25 04:59

String.Replaceメソッドは置換された結果の文字列を返しますが、基のStringの内容は変更されないことに注意してください。 >>置換された結果の文字列を配列に入れなおせば対応できると思いますが、試してみましたか?
syameimaru

2017/07/25 05:01

まだ、'Replace'は'string()'のメンバーではありません というエラーが解決できていなくて試すことが出来ていません。 すみません
King_of_Flies

2017/07/25 05:03

Dim index1 As String = splittedResult.ToString().Replace()で試してみてください。
syameimaru

2017/07/25 05:13

最後の.Replace()のところで この引数の数を受ける'.Replace'がないため、オーバーロードの解決に失敗しました と出てしまいます... 何度も申し訳ございません
syameimaru

2017/07/25 05:22

申し訳ございません。 私のミスで、.Replaceのあとに「("変える文字", "")」を入れていませんでした
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問