【问题标题】:Custom user defined file name format in c# [closed]c#中的自定义用户定义文件名格式[关闭]
【发布时间】:2017-06-01 13:39:01
【问题描述】:

要求是用户可以从预定义的标签中选择文件名格式。

示例 InvoiceNo Date VendorName

如果用户选择 InvoiceNo-Date-Vendorname,则文件名应生成为:001-20170512-ABCElectronics

如果用户选择 InvoiceNo-Date,则生成的文件名应为:001-20170512

如果用户选择 VendorName-InvoiceNo-Date,则文件名应生成如下:ABCElectronics-001-20170512

format.Replace("InvoiceNo",generateNo()); .Replace 会先检查字符串是否存在,然后执行第二个参数吗?第二个参数可能是一个长时间运行的方法。

我应该先检查文件格式中是否存在标签,然后替换还是直接使用.Replace方法而不检查?

谢谢

【问题讨论】:

  • 你尝试过什么,你在哪里卡住了?您只是在问如何在 C# 中连接字符串吗?目前尚不清楚问题是什么。
  • it.Replace("InvoiceNo", theInvoiceNumber).Replace("Date", theDate)...
  • “我需要代码示例” 不是问题......到目前为止,您尝试了什么?你到底卡在哪里了?请查看以下 Stack Overflow 页面并尝试相应地更新您的问题:How do I ask a good question?
  • 这个想法是显示用户可以交换的可拖动标签。
  • @Iffi:所以基本上你希望有人为你编写程序并向你展示它是如何工作的?抱歉,您误解了 Stack Overflow 的功能。我们鼓励您从这里开始:stackoverflow.com/tour

标签: c# filenames


【解决方案1】:

简单的方法:

input = input.Replace("InvoiceNo",generateInvo());
input = input.Replace("Date",generateDate());
input = input.Replace("Vendorname",generateVendor());

这将为您想要的代码更改这些字符串的第一次出现。 如果您愿意,您也可以像x.Replace(y0,y1).Replace(z0,z1); 这样在一行中执行此操作。

【讨论】:

  • 不知何故我不喜欢硬编码这些“InvoiceNo”等。我想我会从数据库中获取它们,然后尝试查找并更改用户选择的文件格式
  • input.Replace("InvoiceNo",generateInvo()); .Replace 会先检查字符串是否存在,然后执行第二个参数吗?第二个参数可能是一个长时间运行的方法。
  • 不,它不会,如果找到“InvoiceNo”但确认不正确,它将替换
  • 要获得更面向未来的解决方案,最好设置一个预先计算的字符串字典并在进行所有替换时对其进行迭代。
  • test this ---> rextester.com/WALJM22691 如您所见,如果找不到索引,它将不会替换
猜你喜欢
  • 1970-01-01
  • 2019-01-02
  • 1970-01-01
  • 2014-12-31
  • 2022-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多