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

解決済みの質問

C# 特定文字列まで削除の方法

C#を初めて2週間ほどになります。

今組んでいるプログラミングで文字列内で先頭文字から特定の文字まで削除をしたいのですが、難しく苦戦しています。

B - 不要部分
A ‐必要部分
C- 特定文字

例 C:\BBBBBBBBBB\CCCAAAAAAAAAAAAAA.txt

先頭からCCCまで削除しCCCAAAAAAAAA.txtだけ残したいです。

もしない場合はCCCの先頭文字の位置を検索しRemoveで先頭からそのCCCの先頭文字で削除しようと考えています。

宜しくお願い致します。

投稿日時 - 2009-09-11 12:36:02

QNo.5280677

困ってます

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

using System;

namespace Q5280677
{
class Q5280677
{
public static void Main(string[] args)
{
string s = "C:\\BBBBBBBBBB\\CCCAAAAAAAAAAAAAA.txt";
// 第二引数の意味,および他に指定できる定数はちゃんと調べよう。後の力の伸びに繋がるぞ。
System.Diagnostics.Debug.Print(s.Substring(s.IndexOf("CCC",StringComparison.Ordinal)));

// こっちの用途だったら,上記の方法は使うべきではない
System.Diagnostics.Debug.Print(System.IO.Path.GetFileName(s));
}
}
}

投稿日時 - 2009-09-11 13:09:07

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

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

回答(3)

>#2
俺は正規表現(というかその濫用)が大嫌いな人間です。特に,OKWave系の回答の中の,HTMLやXMLのソースを正規表現で置換…みたいなものは大抵バグがあります。敢えて指摘はしませんが。

今回は偶々CCCだから問題ありませんが,
例えば
string t = "A.B";
だったり
string t = "[AB]+";
という文字列だったりしたら目も当てられません。

>こっちの用途だったら,上記の方法は使うべきではない
ちなみに,この理由は

"C:\\BBBBCCCBBB\\CCCAAAAAAAAAAAAAA.txt"
というケースを恐れているからです。

投稿日時 - 2009-09-12 11:21:43

ANo.2

using System.Text.RegularExpressions;

---

string t = "CCC"; // 特定文字
string s = "C:\\BBBBBBBBBB\\CCCAAAAAAAAAAAAAA.txt";
string r = Regex.Replace(s, ".+" + t, t);

これだと
○特定文字が存在する場合
C:\BBBBBBBBBB\CCCAAAAAAAAAAAAAA.txt -> CCCAAAAAAAAAAAAAA.txt
C:\CCCCCCCCCC\CCCAAA.txt -> CCCAAA.txt
C:\CCCCCC\AAA.txt -> CCC\AAA.txt

○特定文字が存在しない場合
C:\DDDDDDDDDDDDDD\AAAA.txt -> C:\DDDDDDDDDDDDDD\AAAA.txt

こんな感じになります。

パスの中からファイル名だけを抽出したいなら
以下のような方法もあり。
string r = Regex.Replace(s, ".+\\\\", "");

C#暦は 30分程です(^^; 動作確認してません。
詳しく知りたければ「正規表現」をあたってください。

投稿日時 - 2009-09-12 09:10:55

あなたにオススメの質問