こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

文字列の最後の文字取得

またまたお世話になります。
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は使えませんでした。

???の部分を教えてください。

投稿日時 - 2009-04-26 19:57:52

QNo.4911217

困ってます

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

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
メソッドを完全修飾名で記述します

投稿日時 - 2009-04-27 02:20:46

お礼

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

投稿日時 - 2009-04-28 08:12:23

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.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

投稿日時 - 2009-04-27 10:12:02

お礼

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

投稿日時 - 2009-04-28 08:18:32

ANo.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
といった具合で判定できます

投稿日時 - 2009-04-27 02:27:54

お礼

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

投稿日時 - 2009-04-28 08:14:05