텍스트의 자리 표시자를 개체의 값으로 바꾸기
3973 단어 dotnet
다국어 웹사이트 또는 앱에서 작업하거나 개인화된 확인 이메일을 보내야 하는 경우 텍스트를 리소스 파일이나 데이터베이스에 리소스로 저장하는 경우가 많습니다.
이러한 작업 방식은 번역가가 텍스트를 번역하고 개발자가 웹사이트/앱을 구축할 수 있도록 하는 데 유용합니다.
텍스트는 다른 자리 표시자를 보유할 수 있으며 다음 Nuget 패키지(CodeHelper.Core.PlaceHolder)를 사용하면 자리 표시자를 지정된 개체의 값으로 쉽게 바꿀 수 있습니다.
전제 조건
예제 텍스트
주문 확인 메일을 이용합시다
Hi {CUSTOMERNAME},
<br />
Your order #{ORDERID} is confirmed and will be shipped out of our warehouse on {SHIPMENTDATE}
<br />
<b>Total Details</b><br />
Number of items: {NBOFITEMS}<br />
Total amount: {TOTALAMOUNT}
<br /><br />
Items:
{LISTOFITEMS}
OrderInfo 클래스
주문 정보가 포함된 클래스부터 시작하겠습니다.
우리가 해야 할 유일한 일은
자리 표시자 속성에는 텍스트에 사용되는 자리 표시자 값(문자열)과 선택적인 형식(문자열)이 필요합니다.
using CodeHelper.Core.PlaceHolder;
public class OrderInfo
{
[Placeholder("{ORDERID}")]
public Int64 ID { get; set; }
public Int64 CustomerID { get; set; }
[Placeholder("{CUSTOMERNAME}")]
public string CustomerName { get; set; } ="";
[Placeholder("{SHIPMENTDATE}", "MMM dd, yyyy")]
public DateTime DateShipmentDate { get; set; }
public DateTime DateOrder{ get; set; }
[Placeholder("{NBOFITEMS}", "#,##0")]
public int NbShippedItems { get { return ShippedItemDescriptions.Count; } }
[Placeholder("{TOTALAMOUNT}", "#,###,##0.00")]
public double TotalAmount { get; set; }
[Placeholder("{LISTOFITEMS}")]
public List<string> ShippedItemDescriptions { get; set; } = new();
public OrderInfo() { }
}
코드
대체 문자열 확장에는 다음 매개변수가 있습니다.
using CodeHelper.Core.PlaceHolder;
//-- get the order info
OrderInfo _order = new() { ID = 99876, DateShipmentDate = DateTime.Today.AddDays(1)
, TotalAmount = 1234.50
, CustomerID=333
, CustomerName ="CodeHelper"
, DateOrder= DateTime.Today };
_order.ShippedItemDescriptions.Add("Product Description #1");
_order.ShippedItemDescriptions.Add("Product Description # 2");
_order.ShippedItemDescriptions.Add("Product Description # 3");
//-- Get The Confirmation Email Text
string emailBody = Resources.Translations.EmailConfirmOrder
//-- Replace the placeholder inside the text with the values of
//-- the _order object
emailBody = emailBody.Replace(_order, false, FormatTypes.HTML);
결과
이메일을 보낼 준비가 되었습니다...
Hi CodeHelper,<br />
Your order #99876 is confirmed and will be shipped out of our warehouse on Sept 09, 2022
<br />
<b>Total Details</b><br />
Number of items: 3<br />
Total amount: 1,234.50
<br /><br />
Items:
<ul>
<li>Product Description #1</li>
<li>Product Description # 2</li>
<li>Product Description # 3</li>
</ul>
장점
마케팅 팀이 확인 이메일을 변경하거나 필드를 추가하거나 더 많은 언어로 번역하려는 경우 코드가 계속 작동합니다.
자리 표시자를 추가하는 경우 필드에 속성을 추가하기만 하면 됩니다.
Reference
이 문제에 관하여(텍스트의 자리 표시자를 개체의 값으로 바꾸기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/frederik_vl/replace-the-placeholders-in-a-text-with-the-values-of-the-object-1fp2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)