0

问题

我有一个存储文件密钥的字段,例如:

dev/application/document_type_name/document 12345-67890_123.pdf

我需要选择最后没有数字的键,所以值看起来像:

dev/application/document_type_name/document 12345-67890_.pdf

潜在战略

自从我完成 T-SQL 以来已经有一段时间了,但来自 .NET 方面,我认为一般策略是:

  • 获取下划线字符的最后一个索引
  • 获取句点字符的最后一个索引。
  • 用空格替换这两个字符之间的值。

在 C# 中,我认为它会是这样的:

var test = "dev/application/document_type_name/document 12345-67890_123.pdf"
var indexOfUnderscore = test.LastIndexOf("_");
var indexOfPeriod = test.LastIndexOf(".");
var textToReplace = subtring(indexOfUnderscore + 1, indexOfPeriod -1);
var output = test.Replace(textToReplace, String.Empty);

笔记:

  • 每个键都将具有该格式
  • 下划线和句点之间的值的长度可能不同(可以是 1、12345 等)。
  • 最终结果应保留下划线和句点
4

1 回答 1

6

尝试

select left(@s,len(@s)-charindex('_',REVERSE(@s)))+'_.pdf'

@s你的字符串在哪里。或者如果文件扩展名可以更改

select left(@s,len(@s)-charindex('_',REVERSE(@s))+1) 
     + right(@s,charindex('.',REVERSE(@s)))
于 2013-09-19T20:33:22.630 回答