如何在每个文件扩展名后修剪c#中的字符串

如何在每个文件扩展名后修剪c#中的字符串,c#,visual-studio-2012,C#,Visual Studio 2012,我有一系列附件,如下所示: “” 我用了这个方法: AttachmentName = System.Text.RegularExpressions.Regex.Replace(AttachmentName, @"<(.|\n)*?>", "String.Empty"); 然后一个接一个地把它们显示到控制中 然后我只需要字符串的URL,比如 "" 及 “” 如何才能做到这一点如果没有其他明确的方法,您可以使用正则表达式提取文件名。你能试试下面的代码吗 using System; u

我有一系列附件,如下所示:



我用了这个方法:

AttachmentName = System.Text.RegularExpressions.Regex.Replace(AttachmentName,  @"<(.|\n)*?>", "String.Empty");
然后一个接一个地把它们显示到控制中

然后我只需要字符串的URL,比如 "" 及 “”


如何才能做到这一点

如果没有其他明确的方法,您可以使用正则表达式提取文件名。你能试试下面的代码吗

using System;
using System.Collections.Generic;
using System.Text;
using System.Linq;
using System.Text.RegularExpressions;

namespace ExtensionExtractingTest
{
    class Program
    {
        static void Main(string[] args)
        {
            string fileNames = "test.docxtest2.txttest3.pdftest.test.xlxtest.docxtest2.txttest3.pdftest.test.xlxtest.docxtest2.txttest3.pdftest.test.xlxourtest.txtnewtest.pdfstackoverflow.pdf";

            //Add your extensions to regex definition
            Regex fileNameMatchRegex = new Regex(@"[a-zA-Z0-9]*(\.txt|\.pdf|\.docx|\.txt|\.xlx)", RegexOptions.IgnoreCase);
            MatchCollection matchResult = fileNameMatchRegex.Matches(fileNames);
            List<string> fileNamesList = new List<string>();
            foreach (Match item in matchResult)
            {
                fileNamesList.Add(item.Value);
            }
            fileNamesList = fileNamesList.Distinct().ToList();

            Console.WriteLine(string.Join(";", fileNamesList));
        }
    }
}
使用系统;
使用System.Collections.Generic;
使用系统文本;
使用System.Linq;
使用System.Text.RegularExpressions;
命名空间扩展提取测试
{
班级计划
{
静态void Main(字符串[]参数)
{
字符串文件名=“test.docxtest2.txttest3.pdftest.test.xlxtest.docxtest2.txttest3.pdftest.test.xlxtest.docxtest2.txttest3.pdftest.test.xlxourtest.txtnewtest.pdfstackoverflow.pdf”;
//将扩展添加到regex定义中
Regex fileNameMatchRegex=newregex(@“[a-zA-Z0-9]*(\.txt\.pdf\.docx\.txt\.xlx)”,RegexOptions.IgnoreCase);
MatchCollection matchResult=fileNameMatchRegex.Matches(文件名);
List fileNamesList=新列表();
foreach(匹配结果中的匹配项)
{
fileNamesList.Add(item.Value);
}
fileNamesList=fileNamesList.Distinct().ToList();
Console.WriteLine(string.Join(“;”,fileNamesList));
}
}
}
这里有一个有效的例子

PS:请记住,你必须知道你的文件扩展名,或者你必须预测文件扩展名长度3或4,这将是一个痛苦的字符串解析操作


希望这对您有所帮助

如果您没有其他明确的方法,可以使用正则表达式提取文件名。你能试试下面的代码吗

using System;
using System.Collections.Generic;
using System.Text;
using System.Linq;
using System.Text.RegularExpressions;

namespace ExtensionExtractingTest
{
    class Program
    {
        static void Main(string[] args)
        {
            string fileNames = "test.docxtest2.txttest3.pdftest.test.xlxtest.docxtest2.txttest3.pdftest.test.xlxtest.docxtest2.txttest3.pdftest.test.xlxourtest.txtnewtest.pdfstackoverflow.pdf";

            //Add your extensions to regex definition
            Regex fileNameMatchRegex = new Regex(@"[a-zA-Z0-9]*(\.txt|\.pdf|\.docx|\.txt|\.xlx)", RegexOptions.IgnoreCase);
            MatchCollection matchResult = fileNameMatchRegex.Matches(fileNames);
            List<string> fileNamesList = new List<string>();
            foreach (Match item in matchResult)
            {
                fileNamesList.Add(item.Value);
            }
            fileNamesList = fileNamesList.Distinct().ToList();

            Console.WriteLine(string.Join(";", fileNamesList));
        }
    }
}
使用系统;
使用System.Collections.Generic;
使用系统文本;
使用System.Linq;
使用System.Text.RegularExpressions;
命名空间扩展提取测试
{
班级计划
{
静态void Main(字符串[]参数)
{
字符串文件名=“test.docxtest2.txttest3.pdftest.test.xlxtest.docxtest2.txttest3.pdftest.test.xlxtest.docxtest2.txttest3.pdftest.test.xlxourtest.txtnewtest.pdfstackoverflow.pdf”;
//将扩展添加到regex定义中
Regex fileNameMatchRegex=newregex(@“[a-zA-Z0-9]*(\.txt\.pdf\.docx\.txt\.xlx)”,RegexOptions.IgnoreCase);
MatchCollection matchResult=fileNameMatchRegex.Matches(文件名);
List fileNamesList=新列表();
foreach(匹配结果中的匹配项)
{
fileNamesList.Add(item.Value);
}
fileNamesList=fileNamesList.Distinct().ToList();
Console.WriteLine(string.Join(“;”,fileNamesList));
}
}
}
这里有一个有效的例子

PS:请记住,你必须知道你的文件扩展名,或者你必须预测文件扩展名长度3或4,这将是一个痛苦的字符串解析操作

希望这有帮助

我是这样得到的
AttachmentName=Regex.Replace(AttachmentName,@“”,string.Empty)

这是你的问题。您有有效的分隔符,但由于某种原因将其删除。将分隔符保留在那里,然后使用
String.Split
根据该分隔符拆分它们

或将HTML替换为分隔符而不是空字符串:

AttachmentName = Regex.Replace(AttachmentName, @"<(.|\n)*?>", "|");
我是这样得到的
AttachmentName=Regex.Replace(AttachmentName,@“”,string.Empty)

这是你的问题。您有有效的分隔符,但由于某种原因将其删除。将分隔符保留在那里,然后使用
String.Split
根据该分隔符拆分它们

或将HTML替换为分隔符而不是空字符串:

AttachmentName = Regex.Replace(AttachmentName, @"<(.|\n)*?>", "|");

由于文件名之间没有分隔符,扩展名的长度也不一致,因此要做到这一点将非常困难。如何获取原始字符串,是否可以在文件名之间放置分隔符(如逗号或文件名中不可接受的其他内容);否则,正如CoderHxr所暗示的,这将是一个泥潭。如果可以删除VAL,可以使用Split()然后使用DataSource将它们分配给控件。我不是正则表达式的kenner,但可以用替换“string.Empty”或者一些类似的方法会给你一个定界,这会让你更容易。你所有的文件名都以test开头吗?你能在运行AttachmentName=System.Text.RegularExpressions.Regex.Replace(AttachmentName,@“”,string.Empty)之前添加数据的外观吗;在取出delimeters之前查看原始数据是很有用的,因为文件名之间没有分隔符,扩展名的长度也不一致,所以很难做到这一点。如何获取原始字符串,是否可以在文件名之间放置分隔符(如逗号或文件名中不可接受的其他内容);否则,正如CoderHxr所暗示的,这将是一个泥潭。如果可以删除VAL,可以使用Split()然后使用DataSource将它们分配给控件。我不是正则表达式的kenner,但可以用替换“string.Empty”或者一些类似的方法会给你一个定界,这会让你更容易。你所有的文件名都以test开头吗?你能在运行AttachmentName=System.Text.RegularExpressions.Regex.Replace(AttachmentName,@“”,string.Empty)之前添加数据的外观吗;在取出数据之前查看原始数据会很有用delimeters@Revenant_01我不知道-从HTML中删除了什么?这是原始字符串:

非常漂亮啊。删除标记后:SharePoint\u Health Check Assessment.docxTest Workflow.docxYou