-1


A. ファイル拡張子を削除します。B
. 日付から「-」を削除します。

アップロードされた文字列の例は次のとおりです。

ifrs_au-cor_2013-03-12.xsd

文字列の最初の部分には削除したくない「-」が含まれているため、「-」で置換することはできません。日付のみです。ただし、日付は常に YYYY-MM-DD 形式で、拡張子が末尾に付きます。

現在、文字列から拡張子を削除する次のコードしかありません。

String xsdfnameNoExtNoSlash = xsdfname;
int fileExtPos = xsdfname.LastIndexOf(".");
if (fileExtPos >= 0 )
  xsdfnameNoExtNoSlash = xsdfname.Substring(0, fileExtPos);

これらの操作の両方を一度に行う方法はありますか?

4

2 に答える 2

2
var name = Path.GetFileNameWithoutExtension(name);
return Regex.Replace(name, @"(?<!\d)(\d\d\d\d)-(\d\d)-(\d\d)(?!\d)", "$2$3$4");

これは、最初に拡張子 (存在する場合) を削除し、次にすべての日付を検索してそれらからスラッシュを削除します。

正規表現は先読みと後読みを使用して、「92012-01-019」のようなものが日付と見なされないようにします。数字以外は日付境界として受け入れられます。必要に応じてこれを微調整できます。たとえば、「92012-01-019」実際に「9201201019」に変更する必要がある場合は、先読み/後読みを削除するだけです (そして置換文字列の数字を変更します)。

拡張機能を一度にすべて削除しようとするよりも、別の手順として拡張機能を削除するのが最も簡単だと思います。

于 2013-03-12T19:13:00.923 に答える
0
string noslash = withslash.Replace('-', '');
string noextension = Path.GetFileNameWithoutExtension(xsdfname);
于 2013-03-12T18:55:55.317 に答える