• ベストアンサー

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

C#を初めて2週間ほどになります。 今組んでいるプログラミングで文字列内で先頭文字から特定の文字まで削除をしたいのですが、難しく苦戦しています。 B - 不要部分 A ‐必要部分 C- 特定文字 例 C:\BBBBBBBBBB\CCCAAAAAAAAAAAAAA.txt 先頭からCCCまで削除しCCCAAAAAAAAA.txtだけ残したいです。 もしない場合はCCCの先頭文字の位置を検索しRemoveで先頭からそのCCCの先頭文字で削除しようと考えています。 宜しくお願い致します。

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

  • ベストアンサー
回答No.1

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)); } } }

その他の回答 (2)

回答No.3

>#2 俺は正規表現(というかその濫用)が大嫌いな人間です。特に,OKWave系の回答の中の,HTMLやXMLのソースを正規表現で置換…みたいなものは大抵バグがあります。敢えて指摘はしませんが。 今回は偶々CCCだから問題ありませんが, 例えば string t = "A.B"; だったり string t = "[AB]+"; という文字列だったりしたら目も当てられません。 >こっちの用途だったら,上記の方法は使うべきではない ちなみに,この理由は "C:\\BBBBCCCBBB\\CCCAAAAAAAAAAAAAA.txt" というケースを恐れているからです。

回答No.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分程です(^^; 動作確認してません。 詳しく知りたければ「正規表現」をあたってください。

関連するQ&A

  • 特定文字列と不特定文字列の削除方法

    下記のA列に時刻が記録されております。 A列 時刻 20:00 21:30 22:00 23:45 0:00(7/17) 1:15 2:00 3:00 21:45 22:15 23:30 1:30(7/18) 4:30 5:00 6:00 上記のA列を基にして、B列にはA列に表示されている(7/17)や(7/18)といった、不要な文字列(日 付が変わった際に、時刻の後ろに日付を付け加えたもの)を削除して表示しています。 B列 時刻 20:00 21:30 22:00 23:45 0:00 1:15 2:00 3:00 21:45 22:15 23:30 1:30 4:30 5:00 6:00 =SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2,"(",""),"/",""),")","") ( / )という文字列は表示されなくなりましたが、 日付の数字部分7,17や7,18などの不特定の文字列の削除方法がわかりませんでし た。 A列を参照して、( / )という特定文字列と、7,17や7,18といった不特定文字列の を削除して、B列に表示させる方法は有りますか? 何卒よろしくお願いしたします。

  • エクセルマクロ 特定の文字列を含む行を削除

    エクセルマクロ 特定の文字列を含む行を削除 エクセルのマクロについて教えてください。 下の中から列を限定せず、すべての行でAAA、CCCのいずれかがある場合、 その行ごと、すべて削除したいのです。 時に削除したい特定の文字列が数十種類になるため、 マクロ起動時に削除したい特定の文字を記述したファイルを読み込み、それから 削除できるようにしたいのです。場合によってはそのファイルを編集し、 削除したい文字列を変更したいのです。 ご教示いただだけないでしょうか A列 B列 C列 1 AAA BBB CCC 2 BBB CCC FFF 3 DDD BBB FFF 4 AAA CCC DDD 5 GGG RRR UUU 行中にAAA、BBBがある場合、削除したい ↓ A列 B列 C列 5 GGG RRR UUU マクロを実行し、上記の結果にしたい。

  • C++で文字列の右端から特定の文字までの文字列を

    C++で文字列の中から,文字列の右端から特定の文字までの文字列を取り出すというものを作りたいと思っています。 右端から○文字取り出す。といった感じのコードは書けるのですが、特定の文字まで、というのがどうもうまくいきません。こちら、良いアドバイスをいただける方がいましたらよろしくお願いします。 例:ファイル名を抽出 文字列\system32\notepad.exeからnotepad.exeの部分だけを取り出したい。というものです。 初めに見つけた\まで取り出す・・とやればよいのでしょうが、その方法が今ひとつ良くわからないので、どうかご助力お願いいたします。

  • 文字列を削除したい。

    Stringの文字列をStringに移し特定の 文字を消したいと思っています。 調べたところdeleteというメソッドで。 開始位置と終了位置を指定すれば 削除できるみたいですが、 文字列を指定してその文字列を削除する、 という事はできますか? お願いします。

    • ベストアンサー
    • Java
  • 特定文字列以下のセル削除

    こんにちは。 特定の文字列を含むセルから5行削除するマクロを作りたいのですが、 どのようにするとよいでしょうか。 特定文字列は、各列に1つあり、行の位置はバラバラです。 その特定文字列を含み以下5行分のセルを削除し、上に詰めたいと考えています。 初心者ゆえ、ご指導ください。

  • 特定文字列を含まない行を削除

    以前特定文字列を含む行を削除する方法の質問をし、正規表現を置換することでできることを知りました。^.*特定の文字列.*\n 今度は特定文字列を含まない行を削除を削除したいです。 この場合どう記述すればいいでしょうか? また、特定文字列1と特定文字列2のどちらかを含まない行を削除する方法もあわせて知りたいです。

  • 文字列から特定の文字を抜き出す

    こんにちは。 シェルスクリプトで文字列から特定の文字を抜き出し、 変数に入れたいのですが、うまくいきません。 申し訳ありませんが、アドバイスをお願いいたします。 文字列 $moji=aaa_bbb_ccc (文字は変動します) $a=aaa $b=bbb $c=ccc と"_"毎に変数に代入したい。 echo $moji | awk -F_ '{print $2}' で文字を標準出力に取り出すことはできるのですが、 そこから変数に代入する方法がいまいち分かりません。

  • 文字列の後ろから必要分だけ削除したい。

    例1 Dim str As String = "あいうえお1234" 文字列の中の1234だけ削除したい場合は、 str = str.Remove(5,4) という風に、5文字目の後から4文字削除にすればよいのですが、 例の"あいうえお"の部分の長さが毎回処理する度に異なる場合は、 文字列の頭から何文字目という指定ができないので、”後ろから4文字を削除したい”となります。その場合は、どのようなプロパティを使えばいいのでしょうか。 .NET環境です。

  • 特定の文字列を削除

    こんにちは perlで特定の文字列からその後ろをすべて 削除したいのですが、うまくできなくて質問します。 Ex)123.12abc   ⇒123.12 012.123abc   ⇒012.123 123.1234|| ⇒123.1234 上記のようなデータの少数点までの数字の後ろにabc、||、半角、全角スペースなど文字列があります. 少数点までの数字の後ろの文字列すべてを削除したいですが、 特定の文字列からその後ろにある文字列全てを指定する方法(正規表現)はありませんでしょうか? どうかご存知の方、教えてください!! よろしくお願いいたします。

  • VBA 特定の文字列を含む行を削除する方法

    特定の文字列を含む行を削除する方法が知りたいです。 行を削除する方法はWebで見つけたのですが↓ ---------------------------------------------------- Sub 特定の文字列を含む行を削除() Dim c As Range Dim myRow As Long With Range("A:A") Set c = .Find("特定の文字列") Do While Not c Is Nothing Rows(c.Row).Delete shift:=xlUp Set c = .Find("特定の文字列") Loop End With End Sub ---------------------------------------------------- ↑行を指定している箇所のRowsを Columns  RowをColomn に変更して以下の様にしてみました、   Columns(Colomn,c).Delete shift:=xlUp だめでした、、、。 VBAの知識が乏しく、組み立て方について理解が無いため、どうすればよいかさっぱりわからず、、 こちらで質問させて頂きました。。。 何卒宜しくお願い致します。

専門家に質問してみよう