アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

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

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

例 C:\BBBBBBBBBB\CCCAAAAAAAAAAAAAA.txt

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

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

宜しくお願い致します。

A 回答 (3件)

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));
}
}
}
    • good
    • 0

>#2


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

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

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

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

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

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています