4

私は次のデータを持っています:

D:\toto\food\Cloture_49000ert1_10_01_2013.pdf
D:\toto\food\Cloture_856589_12_01_2013.pdf
D:\toto\food\Cloture_66rr5254_10_12_2012.pdf

日付部分を抽出するにはどうすればよいですか?例えば:

D:\toto\food\Cloture_49000ert1_10_01_2013.pdf --> 10_01_2013
D:\toto\food\Cloture_856589_12_01_2013.pdf --> 12_01_2013
D:\toto\food\Cloture_66rr5254_10_12_2012.pdf --> 10_12_2012

私の考えは、使用LastIndexOf(".pdf") してから10文字を逆方向に数えることです。

サブストリングまたは別の方法を使用してこれを解決するにはどうすればよいですか?

4

7 に答える 7

6

Substringこの場合に使用します。

このインスタンスからサブストリングを取得します。サブストリングは、指定された文字位置から始まります。

このようにしてみてください。

string s = "D:\\toto\\food\\Cloture_490001_10_01_2013.pdf";
string newstring = s.Substring(s.Length - 14, 10);
Console.WriteLine(newstring);

これがDEMOです。

于 2013-01-15T12:53:57.803 に答える
4

のインデックスを見つける必要はありません.pdf

path.Substring(path.Length - 14, 10)
于 2013-01-15T12:52:24.563 に答える
3

私は正規表現でこれを行います。

^[\w:\\]+cloture_(\d+)_([\d_]+).pdf$

2番目のグループの日付と一致します。

于 2013-01-15T12:54:32.933 に答える
2

ファイル名が常にその形式である場合は、次のような大雑把なことを行うことができます。

string filename = @"D:\toto\food\Cloture_490001_10_01_2013.pdf";

string date = filename.Substring(filename.Length - 14, 10);

これにより、からサブストリングが取得されます10_01_2013.pdf。これは14文字の長さですが、最初の文字のみを取得し、 。10を残します10_01_2013

ただし、ファイル名が別の形式であり、日付が名前内のどこかに表示される可能性がある場合は、正規表現のようなものを検討して、一致を実行し、##_##_####それを引き出すことができます。

于 2013-01-15T12:52:43.110 に答える
0

このアプローチを試してください:

string dateString = textString.Substring(textString.Length-14, 10);

こちらもご覧ください:文字列から右端のn文字のみを抽出します

于 2013-01-15T12:52:20.267 に答える
0

LastIndexOfを使用する場合は、

string str = @"D:\toto\food\Cloture_490001_10_01_2013.pdf";
string temp = str.Substring(str.LastIndexOf(".pdf") - 10, 10);

そして、あなたはそれを次のように解析することができます

DateTime dt;
if(DateTime.TryParseExact(temp, "MM_dd_yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out dt))
{
    //valid 
}
else
{
    //invalid
}
于 2013-01-15T12:55:39.110 に答える
0

LastIndexOf「.pdf」を使用するというあなたの考えに沿って、逆算します。または、Path.GetFileNameWithoutExtensionメソッドを使用して名前を取得し、最後の10文字を取得します。

これらのメソッドは、ファイル名へのパスが変更された場合でも機能し続け(おそらく変更されます)、適切な場所を見つけるためにマジックナンバー(関心のある部分文字列の長さを定義するもの以外)に依存しません文字列で。

于 2013-01-15T12:57:25.283 に答える