C# 文字列の分割方法とファイル名の取得方法について

このQ&Aのポイント
  • VS2005を使用している場合、複数のURLを格納したString型の配列から各要素の最後尾にあるファイル名だけを取り出す方法を知りたいです。splitを使用してファイルパスを区切り、最後尾の要素を取得することができます。
  • URLの長さが異なる場合でも、for文内でsplitを使用し、分割した文字列を別の配列に格納し、その最後尾の要素を取り出すことができます。
  • 質問者が勉強不足であることを伝えつつ、分割とファイル名の取得方法について教えていただけると幸いです。
回答を見る
  • ベストアンサー

C# 文字列の分割

VS2005を使用しているものです。 複数のURL(入力)を格納したString型の配列があるのですが、 この配列から各要素(URL)の最後尾にあるファイル名だけを 取り出して別のString型の配列に入れたいのですが Splitなどを駆使すればよいのでしょうか? 例 C:\○○○\▲▲▲\××.拡張子 (元の配列の要素の一例)   などから××.拡張子の文字列だけを取り出して   別の配列に格納する感じです。 splitを使う際は\などを区切りに考えています。 for文の中でsplitを駆使しようと考えたのですが、分割した文字列を別で配列に格納して、その最後尾の要素だけ取り出したいのですが、URLの長さは入力によってまちまちなのでどのようにして取り出せばよいか困っています。 勉強不足で恐れ入りますが、何かご教授願えれば幸いです。

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

  • ベストアンサー
  • rooksan
  • ベストアンサー率66% (4/6)
回答No.1

いろいろな方法がありますが、splitを使うと //URLを格納した文字列の配列 string[] urls = {"aaa\\ss.tct","aaaaad\\cc\\a.txt"}; //配列の個々の文字列要素に対してループ foreach (string url in urls){ //フィルダーの文字で分割して文字列の配列へ変換 string[] pathName = url.Split('\\'); //配列の最後を表示 Console.WriteLine(pathName[pathName.Length - 1]); }

ise-nobu
質問者

お礼

ご回答ありがとうございます! Lengthの使い方に少し問題があったようでした(汗 ヒントを元に無事解決いたしました ありがとうございます!

関連するQ&A

  • 文字列を分割するクラスについて

    住所のメソッドでの開発についてご質問がございます。 仕様 住所の配列は全角80(半角160)に格納される。 住所地名の途中で分割しないようにする。 80桁すべてに文字は格納されているときは20桁の4等分にする。 スペースで分割をおこなうようにする。 例1  実行前  札幌市 ○区 北○○○○○ 00-0-0-00      実行後  札幌市 ○区 北○○○○○,00-0-0-00,,      例1の場合20桁ずつ分割を考えると14桁目のスペースを利用してカンマ区切りで4つに分割 例2 実行後  あああああ いいいいい ううううう ええ     実行後  あああああ いいいいい ううううう ええ,,,     例2の場合文字がちょうど20桁なのでちょうどカンマ区切りで4等分  例3  実行前   あああああ いいいい ううううううううううう えええええ 0-00-000       実行後   あああああ いいいい,ううううううううううう えええええ,0-00-000,      例3の場合20文字だと区切りだと、うの領域の途中になるため      11桁目のスペースを利用して分割      そしてそこから20桁目を区切ろうとして次の区切りたい場所が      番地の途中になるため実行後のように、えで区切り4等分にカンマ区切り と基本的に住所分割をスペースを利用して住所の途中や番地の途中で 区切らないでカンマ区切りの4等分にするアルゴリズムを考えています。 private void 住所漢字(String 住所漢字, String 住所カナ, String 住民票住所漢字,PrintWriter out) { //(1)分割する文字列を生成 String str = new String(住所漢字); //(2)文字列をsplitメソッドで分割 String[] strAry = str.split(",", 0); { str = 住所漢字; } for (int i=0; i<strAry.length; i++) { } out.print(str.substring(0,20)+","+ str.substring(20,40) +","+ str.substring(40,60)+","+ str.substring(60,80)); }      現在は単純に全角80桁の配列に対して 20桁ずつの4等分に実行されるだけのプログラムになってます。 上記の例のような住所分割のアルゴリズムを開発する際 StringTokenizer st = new StringTokenizerのクラスは開発に有効でしょうか? また有効である場合のソース実行例の等のアドバイス、もしくは ほかに文字を分割するための便利なクラスがございましたら ご教授ください。 どうぞよろしくお願いいたします。

    • ベストアンサー
    • Java
  • ArrayIndexOutOfBoundsExceptionの対処法

    jspで下記のようにStringの文字列をsplitによって Stringの配列に格納しています。 文字列strは"文字,文字" か "文字," か ",文字" という感じで格納されています。 String str; String[] str.split(","); そしてjspでString[0]とString[1]を必ず表示するようになってます。 そうすると文字列"文字,"の場合はString[1]は存在しないため 例外がでて怒られてしまいます。 文字列は入力値のため、どの文字列のパターンが来るか分からない ためどうすればいいのか分からず困っています。 いい方法があればあれば教えていただければと思います。

    • ベストアンサー
    • Java
  • splitを使ってスペース位置で文字列を区切りたい

    splitを使ってスペース位置で文字列を区切りたいのですが、 String[] word = str.split(" ",0);  //半角空白 のように書くと、全角スペースは区切りとしてみなされず、 String[] word = str.split(" ",0);  //全角空白 のように書くと、半角スペースは区切りとしてみなしてくれません。 全角スペースでも半角スペースでも、スペース位置で文字列を区切りたいのですが、どのように書けばよいのでしょうか?

    • ベストアンサー
    • Java
  • C言語 文字列格納

    テキストファイルから整数データ又は文字列を読み込んで配列に格納する動作についての質問です。 テキストファイルが1行区切りの整数型なら1次元配列で for(i = 0; i < maxSize; i++) { fscanf(fp,"%d", &data[i]); } テキストファイルが1行区切りの文字列なら2次元配列で for(i = 0; i < MAXSIZE; i++) { if (fscanf(fp,"%s", &data[i][300]) == EOF) break; } for(j = 0; j < i; j++) printf("%s\n", data[j]); みたいな具合に格納できたんですが、 テキストファイルが1行区切りのデータではなく、空白文字区切りの文字データだった場合、それぞれどのようにして配列に格納すればいいかがわかりません。 イメージとしては、1文字目から見ていって空白が出ればそこで切って格納していくというかんじなのですが・・・ 質問の内容がわかりにくいかもしれませんが、是非教えてください。お願いします。

  • エクセル2003 string型のデーターの所定文字数の数の取得

    いつもアドバイス頂きありがとうございます。 今回、質問させていただきたいのは、 string型でデーターを取得した文字列に対して ある文字の文字数がいくつ在るかを取得したいのですが VBA関数で、そのような関数はあるのでしょうか? 例  myDataにstring型の文字列を取得してあります。 その中に「,」(カンマ)が何個存在するかと言う事 を取得したい。 やりたい事として、mydata()の中に2次元配列要素となるデーターを 1次元で仮格納してあり、それをセルに書き出すために2次元 に格納(splitで再格納)しなおしているのですが、データーが変わる たびに、カンマの数を数えて配列宣言を記入するのが面倒なので、 カンマの数がいくつでも、2次元に再格納できるようにしたいためで す。 宜しくお願いいたします。

  • C# Splitと配列の複合方法

    こんにちは、 ”てすと、です。¥四月、寒い。” のような文字列があり これを¥で区切り、さらにカンマで区切って(Splitでここはできたのですが) 結果を下記のように配列に格納したいと思うのですが、どのように記述すればよいでしょうか? 配列(0,0)=”てすと” 配列(0,1)=”です。” 配列(1,0)=”四月” 配列(1,1)=”寒い。” 文字列の内容が定まっていないため配列の要素数が変動してするものでして。

  • cshで文字列分割

    ヤマトです。 cshの文字列分割について質問します。 環境はRed Had Linux7.2です。 set DATA = hoge1;hoge2;hoge3 のデータを";"区切りでDATA_ARR(配列)に入れたいのですが、分かりません。 調べた所、[awk]と[split]を使えばできるようなのですが、 実際どのようにSHに記述していいか分かりません。 n = split(DATA,DATA_ARR,";") をどのように記述したらよいのでしょう? 教えて頂けると有り難く思います。宜しくお願いします。

  • C#で文字列から数値だけ取得する方法

    C#で文字列から数値だけ取得する方法 stringの文字列をcharの文字配列に入れなおして 数値の場合だけ、別の配列(例:a[3])にコピーする。 そんな方法で数値を抜き出そうかと思っています ですが、文字列から数値だけを見つけ出して取得する方法がわかりません。 詳しくのっているサイトなどありましたら 教えてください…!!

  • 【C言語教えて下さい!】文字検索

    引数として、複数の文字列を格納した配列、その文字列数、あるいは文字列aを与え、aが複数の文字列を格納した配列中に見つかれば1を返し、見つからなければ0を返す関数find_string()をつくりたいのですがよくわかりません。 どなたかご教授お願いします。 ヒントや考え方など教えて下さい。

  • 文字列を配列に変えたい【PHP】

    文字列を配列に変えたいです。 下で一応はできたのですが、URLの数の変化に対応できるようにしたいです。 よろしくお願いします。 $catch="URL1 URL2 URL3 URL4"; $split = explode(" ",$catch); $url=array( $split[0], $split[1], $split[2], $split[3] );

    • ベストアンサー
    • PHP

専門家に質問してみよう