我有一串这样的附件:
“
<a href="/departments/Attachments/2043_3162016062557_SharePoint_Health%20Check%20Assessment.docx">SharePoint_Health Check Assessment.docx</a><br><a href="/departments/Attachments/2043_3162016062557_Test%20Workflow.docx">Test Workflow.docx</a><br>
”。
我用这个方法:
AttachmentName = System.Text.RegularExpressions.Regex.Replace(AttachmentName, @"<(.|\n)*?>", "String.Empty");
我得到了结果:
SharePoint_Health检查评估.docxTest Workflow.docx
如何使用c#拆分字符串并分别得到每个文件名的结果:
SharePoint_Health Check Assessment.docx
Test Workflow.docx
然后将它们逐个显示出来。
之后我只想要字符串的URL “http://srumos1/departments/Attachments/2053_3172016093545_ITPCTemplate.txt” 和 “http://srumos1/departments/Attachments/2053_3172016093545_ITPCTemplate.txt”
我该怎么做
答案 0 :(得分:2)
如果您没有其他明确的方法可以使用正则表达式来提取文件名。你能试试下面的代码吗?;
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));
}
}
}
这里有一个工作示例http://ideone.com/gbopSe
PS:请记住,您必须知道您的文件扩展名,或者您必须预测文件扩展名长度为3或4,这将是一个痛苦的字符串解析操作。
希望这有帮助
答案 1 :(得分:2)
我是这样得到的
AttachmentName = Regex.Replace(AttachmentName, @"<(.|\n)*?>", string.Empty);
那么你的问题就在那里。你有有效的分隔符,但出于某种原因将它们剥离了。将分隔符保留在那里并使用String.Split
根据该分隔符对它们进行拆分。
或者用分隔符替换HTML而不是空字符串:
AttachmentName = Regex.Replace(AttachmentName, @"<(.|\n)*?>", "|");
然后基于此分裂:
string[] filenames = AttachmentName.Split(new [] {'|'},
StringSplitOptions.RemoveEmptyEntries);