• ベストアンサー

文字列の最後の文字取得

またまたお世話になります。 Microsoft Visual Basic 2008 Express Editionを使ってます。 MyFolder.Description = "フォルダを指定してください" MyFolder.RootFolder = System.Environment.SpecialFolder.Desktop MyFolder.SelectedPath = "C:\Program Files" If  MyFolder.ShowDialog() = DialogResult.OK  Then   If  ???= "\"  Then    NewMyFolder = MyFolder.SelectedPath  &  "test"   Else    NewMyFolder = MyFolder.SelectedPath  &  "\test"   End If End If MyFolder.Dispose() MkDir(NewMyFolder)←? Label2.Text = NewMyFolder ダイアログで選択してそこにtestフォルダを作成したいのですが。。。 MyFolder.SelectedPathが "C:\Program Files"の場合(例) "D:\"の場合(例) 文字列の最後の文字を取得したいのですが ???の部分がわかりません。 Rigthは使えませんでした。 ???の部分を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

If  MyFolder.ShowDialog() = DialogResult.OK  Then   dim ss as String = MyFolder.SelectedPath   if ss.substring( ss.length -1 ) = "\" then     NewFolder = ss + "\test"   else     NewFolder = ss + "test"   end if End If といった具合で ... StringクラスのSubstring以外に VisualBasic名前空間のRightを使うなら Imports Microsoftとコードの冒頭で宣言して if VisualBasic.Right( ss, 1 ) = "\" then と記述するか if Microsoft.VisualBasic.Right(ss,1) = "\" then メソッドを完全修飾名で記述します

q-i-p
質問者

お礼

ありがとうございます。 まだまだ勉強不足でした。。。 教えていただいたコードで完成させることができそうです。^^

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

回答No.3

パスの作成に関する文字列操作であれば、System.IO.Path.Combineメソッドを使ったほうが ベターだと思います。 http://msdn.microsoft.com/ja-jp/library/system.io.path.combine.aspx あと、2008であればUsingをつかえば、Disposeを気にしなくても良いです。 http://msdn.microsoft.com/ja-jp/library/htd05whh.aspx ディレクトリ作成は、MkDirよりもSystem.IO.Directory.CreateDirectoryを使うとか。 http://msdn.microsoft.com/ja-jp/library/system.io.directory.createdirectory(VS.80).aspx

q-i-p
質問者

お礼

Usingやディレクトリ作成の方法も教えていただいてありがとうございます。^^ そういったやり方もあるのですね。。。 しっかりと勉強させていただきました。 ご教授ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

別の手段として StringクラスのLastIndexOfを使う手もあります LastIndexOfやIndexOfは 0ベースの値を返すので少々注意が必要です 0ベースとは 1番目が0、2番目が1、3番目が2といった具合になります 『C:\』の場合の『\』は2 『C:\work\Test』の場合は 7 ということになります これを使って if ss.LastIndexOf( "\" ) = ss.Length - 1 then といった具合で判定できます

q-i-p
質問者

お礼

また違ったやり方があるのですね。 状況によって使い分けてみます。 ご教授ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • フォルダ設定について知りたいです。

    いきなりですが例です。 例(1): 'SaveFileDialogクラスのインスタンスを作成 Dim sfd As New SaveFileDialog() sfd.FileName = "新しいファイル.html" sfd.InitialDirectory = "C:\" sfd.Filter = _ "HTMLファイル(*.html;*.htm)|*.html;*.htm|すべてのファイル(*.*)|*.*" sfd.FilterIndex = 2 'タイトルを設定する sfd.Title = "保存先のファイルを選択してください" sfd.RestoreDirectory = True sfd.OverwritePrompt = True sfd.CheckPathExists = True 'ダイアログを表示する If sfd.ShowDialog() = DialogResult.OK Then 'Copy System.IO.File.Copy("C:\test.txt", (sfd.Namefile), True) End If という具合に「名前を付けて保存」で指定先をコピーする様には 出来るんですが、これがフォルダの場合・・ 例2: 'FolderBrowserDialogクラスのインスタンスを作成 Dim fbd As New FolderBrowserDialog '上部に表示する説明テキストを指定する fbd.Description = "フォルダを指定してください。" 'ルートフォルダを指定する 'デフォルトでDesktop fbd.RootFolder = Environment.SpecialFolder.Desktop '最初に選択するフォルダを指定する 'RootFolder以下にあるフォルダである必要がある fbd.SelectedPath = "C:\Windows" 'ユーザーが新しいフォルダを作成できるようにする 'デフォルトでTrue fbd.ShowNewFolderButton = True 'ダイアログを表示する If fbd.ShowDialog(Me) = DialogResult.OK Then '選択されたフォルダを表示する System.IO.File.Copy("C:\test.txt", ???????, True) End If 上記の??????が分りません。 指定したフォルダ内にあるファイルを操作したいのですが、 (fbd.SelectedPath),"test.txt"でも怒られます。 どの様にしてソースを書けば良いでしょうか? ※回答はソースコードを必ず書き込んでください。

  • VBで選択したフォルダにフォルダをコピーしたい

    VBで、選択したフォルダに、中身の入ったフォルダを上書きしてコピーするプログラムを作りたいと思い、フォルダを選択し、選択したフォルダをラベルに表示させるというところまではできました。 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim fbd As New FolderBrowserDialog fbd.Description = "フォルダを指定してください。" fbd.RootFolder = Environment.SpecialFolder.Desktop fbd.SelectedPath = "C:\Windows" fbd.ShowNewFolderButton = True If fbd.ShowDialog(Me) = DialogResult.OK Then Console.WriteLine(fbd.SelectedPath) Label3.Text = fbd.SelectedPath End If End Sub ですが、ここから試行錯誤を繰り返してみるも、FolderBrowserDialogで選択したフォルダにフォルダを上書きすることができないのです。アドバイスよろしくお願いします。

  • VB ファイルの検索について

    VB ファイルの検索について こんにちは VB2008でファイルの種類を指定して、検索するプログラムを作っています。 要求: 1ボタンをクリックして、検索対象のフォルダを指定 2事前に決めたファイル種類(*.txt)を検索する 3(*.txt)がある場合はディスクトップにコピーする 今は1ができましたが、2と3について、どうやって書くのかわからないです。 --------------------ソース------------ Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim SourcePath As String Dim fdb As New FolderBrowserDialog With fdb 'Select to Folder and open it .Description = "Please Select Folder" .RootFolder = System.Environment.SpecialFolder.MyComputer SourcePath = TextBox1.Text .SelectedPath = SourcePath If fdb.ShowDialog() = DialogResult.OK Then TextBox1.Text = fdb.SelectedPath End If End With End Sub End Class ------------------------------------------------------- 以上  宜しくお願い致します。(^@^)

  • VB.NRT FolderBrowserDialogを使用して、選択したフォルダ内のファイルを表示させるには?

    VB.NET初心者です。 ネットで調べてFolderBrowserDialogを使用して、フォルダを表示させ、フォルダのパスを取得するところまではできたのですが、フォルダの中のファイルを表示させるには、どうしたらよいのでしょうか? OpenFileDialogクラスを使えば、ファイルは表示できるようですが、ファイルの入っているフォルダのパスだけ取ってきたい(複数ファイルを一度に読みこむため)のですが、何か良い手はありませんでしょうか? また、FolderBrowserDialog使用で前回選択したフォルダを次にダイアログを開いたときにも表示させることは可能でしょうか? よろしくお願いいたします。 Dim fbd As FolderBrowserDialog = New FolderBrowserDialog() fbd.Description = "フォルダを指定してください。" If fbd.ShowDialog() = DialogResult.OK Then Console.WriteLine(fbd.SelectedPath) End If Dim folder As String = fbd.SelectedPath Dim serchpattern As String = "*.txt" Dim files As New ArrayList 'フォルダ名格納 Get_FPath(folder, serchpattern, files) End Sub

  • (C#)フォルダを指定するダイアログの中身が表示されない

    只今フォルダを参照してそこにファイルを保存するプログラムを作っているのですが フォルダを参照するダイアログの中身が表示されなくて困っています... プログラムの中身はこちら↓ ================================= FolderBrowserDialog fd = new FolderBrowserDialog(); if (fd.ShowDialog() == DialogResult.OK){ Console.WriteLine(fd.SelectedPath); } ================================= 調べてみたのですが、同じような方は見つけても 何をどうしたら解決した、というところまで書かれておらず どうしたらちゃんと表示されるのかわかりませんでした。 プログラミング初心者ですので、見落としている箇所など 原因として考えられるものが見つけられません 何か足りないのでしょうか? わかる方がいましたらお願いします。

  • ListViewから選択中の文字列を取得

    VB2005の初心者です。 タイトル通り、ListViewから選択中の文字列によって処理を変えるプログラムを構築しようとしているのですが、うまくいきません。 ComboBoxの場合では Private Sub button1_Click~ If ComboBox1.SelectedItem = "テスト" Then 処理 End if でうまくいったのですが、ListViewの場合では Private Sub button1_Click~ If ListView1.SelectedItems = "テスト" Then 処理 End if と指定すると 「エラー 1 これらの引数で呼び出される、アクセス可能な '=' がないため、オーバーロードの解決に失敗しました」 とエラーがでます。 ListViewから選択中の文字列を取得するには「.SelectedItems」では取得できないのでしょうか? VBに詳しい方ご教授お願いします。

  • ファイルコピーの事で質問です。

    質問ですが、 'フォルダセット Dim fbd As New FolderBrowserDialog fbd.Description = "フォルダを指定して下さい。" fbd.RootFolder = Environment.SpecialFolder.Desktop fbd.SelectedPath = Environment.SpecialFolder.Desktop 'コピー System.IO.File.Copy(fbd.SelectedPath & "\test.pak", System.Environment.GetFolderPath(System.Environment.SpecialFolder.ProgramFiles) & "\test.pak") フォルダを選択した後、 そのフォルダ内の「test.pak」をコピーして、 プログラムファイルを取得して、取得した先の場所に保存したいのですが、 これをデバッグすると、怒られてしまいます。 "(C:\Program File\test.pak) の一部が見つかりませんでした" という怒られ内容です。 ドコモ間違ってないのに、この様なエラーが出てしまうのですが 何処が悪いのでしょうか?どの様な改善をすれば良いでしょうか?

  • FolderBrowserDialogの使い方

    こんにちは!FolderBrowserDialogについてお教えいただけないでしょうか? 下記のコードを実行しました。 ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 'FolderBrowserDialogクラスのインスタンスを作成 Dim fbd As New FolderBrowserDialog '上部に表示する説明テキストを指定する fbd.Description = "フォルダを指定してください。" 'ルートフォルダを指定する 'デフォルトでDesktop fbd.RootFolder = Environment.SpecialFolder.Desktop '最初に選択するフォルダを指定する 'RootFolder以下にあるフォルダである必要がある fbd.SelectedPath = "C:\Windows" 'ユーザーが新しいフォルダを作成できるようにする 'デフォルトでTrue fbd.ShowNewFolderButton = True 'ダイアログを表示する If fbd.ShowDialog(Me) = DialogResult.OK Then '選択されたフォルダを表示する Console.WriteLine(fbd.SelectedPath) End If ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' デスクトップを選択すると、「C:\Users\owner\Desktop」、 Cドライブを選択すると、「C:\」となります。 フォルダを選択した後に、「abc.txt」という固定ファイルを出力させようと思っています。とりあえずは、文字列連結をしてフルパスを作成します。 選択したフォルダパスに「"\abc.txt"」と文字列連結すると、「C:\Users\owner\Desktop\abc.txt」になります。 これは、OKです。 しかし、「Cドライブ直下では、「C:\\abc.txt」となってしまい、円マークが2つできてしまいます。 これだと正しいパスにファイルを出力することができないと思います。 これを解決するには、つまり「C:\abc.txt」にするには、どのようにコードを書いたらいいでしょうか?FolderBrowserDialogは使うものと前提でお願い致します!

  • 文字列検索チェック

    VB6.0について質問です。 VBからデータベースのデータを読込んでそれに応じたチェックボックスを チェックするという制御がうまくいきません。 詳細は、データは空白で区切られていて3つまでは固定された文字で送られてきます。(リンゴ バナナ オレンジ) これだけだと以下のプログラムで済むのですがこの3つ以外に不確定の文字が 入っている場合はその他にチェックを入れたいのですが どのようにプログラムを組めばよいですか? チェックは複数選択可能です。 *targetStringにデータベースからのデータが入ってきます If InStr(targetString, "リンゴ") <> 0 Then Chk1(0).Value = 1 Else Chk1(0).Value = 0 End If If InStr(targetString, "バナナ") <> 0 Then Chk1(1).Value = 1 Else Chk1(1).Value = 0 End If If InStr(targetString, "オレンジ") <> 0 Then Chk1(2).Value = 1 Else Chk1(2).Value = 0 End If

  • 文字列に特定の文字の有無を調べたい。

    ある文字列に特定の文字が入っているか否かを調べたいのです。 AccessでVBAを使用して有無を調べたいんです。 具体的には下記の通りです。 カナ氏名が入力されているフィールドを検索して文字列を抽出したいんです。 "抽出"をカナにすると"チュウシュツ"ですよね。 所が私が使用しているテーブルのカナ氏名が入力されているフィールドには "抽出"は"チユウシユツ"と入力されているんです。 "チュウシュツ"と入力しても"抽出"は表示されず、"チユウシユツ"と入力しなければ "抽出"は表示されません。 従って"チュウシュツ"とキーボード入力してから先頭から2文字目と5文字目の "ュ"を"ユ"に再度変換しなければならないんです。 何か簡単な関数やプロシージャがないでしょうか? 何分初心者なんで下記の様な凄く長いプロシージャしか思い浮かびません。 宜しくお願いいたします。 (例) Public Function Kana_change() Dim kana As String '左から2桁目が小文字の時の変換 If Mid(kana, 2, 1) = "ァ" Then kana = Right(kana, 1) & "ア" & Mid(kana, 3, 13) Else kana = kana End If If Mid(kana, 2, 1) = "ィ" Then kana = Right(kana, 1) & "イ" & Mid(kana, 3, 13) Else kana = kana End If If Mid(kana, 2, 1) = "ゥ" Then kana = Right(kana, 1) & "ウ" & Mid(kana, 3, 13) Else kana = kana End If If Mid(kana, 2, 1) = "ェ" Then kana = Right(kana, 1) & "エ" & Mid(kana, 3, 13) Else kana = kana End If If Mid(kana, 2, 1) = "ォ" Then kana = Right(kana, 1) & "オ" & Mid(kana, 3, 13) Else kana = kana End If If Mid(kana, 2, 1) = "ャ" Then kana = Right(kana, 1) & "ヤ" & Mid(kana, 3, 13) Else kana = kana End If If Mid(kana, 2, 1) = "ュ" Then kana = Right(kana, 1) & "ユ" & Mid(kana, 3, 13) Else kana = kana End If If Mid(kana, 2, 1) = "ョ" Then kana = Right(kana, 1) & "ヨ" & Mid(kana, 3, 13) Else kana = kana End If If Mid(kana, 2, 1) = "ッ" Then kana = Right(kana, 1) & "ツ" & Mid(kana, 3, 13) Else kana = kana End If End Sub End Function