C#中使用IFormattable实现自定义格式化字符串输出示例
作者:junjie 发布时间:2023-05-31 23:34:04
标签:C#,IFormattable,自定义,格式化字符串
IFormattable接口提供了ToString()方法的定义,使用该方法可以将对象的值按照指定的格式转化成字符串的功能。
下面是ToString()方法的完整定义。
string ToString( string format, IFormatProvider formatProvider )
其中:
第一个参数告诉方法需要何种格式的输出,而第二个IFormatProvider的参数则允许类型的使用者自定义格式化方法,在本文实现的ToString()方法中,并没有使用到第二个参数。关于IFormatProvider接口请阅读文章《ICustomFormatter及IFormatProvider接口用法揭秘》,本文不做过多说明。下面是完整的实例代码。
using System;
using System.Globalization;
namespace GreetingExample
{
public class Greeting : IFormattable
{
private string name;
public Greeting(string name)
{
this.name = name;
}
public override string ToString()
{
return this.ToString("CN",CultureInfo.CurrentCulture);
}
public string ToString(string format)
{
return this.ToString(format,CultureInfo.CurrentCulture);
}
public string ToString(string format, IFormatProvider provider)
{
if (String.IsNullOrEmpty(format)) format = "CN";
if (provider == null) provider = CultureInfo.CurrentCulture;
switch (format.ToUpper())
{
case "CN":
case "TW":
return "你好," + name.ToString();
case "US":
case "GB":
return "Hello," + name.ToString();
case "JP":
return "こんにちは," + name.ToString();
default:
throw new FormatException(String.Format("The {0} format string is not supported.", format));
}
}
}
}
using System;
namespace GreetingExample
{
class Program
{
static void Main(string[] args)
{
Greeting greeting = new Greeting("三五月儿");
Console.WriteLine(greeting.ToString("CN"));
Console.WriteLine(greeting.ToString("US"));
Console.WriteLine(greeting.ToString("JP"));
}
}
}
下面是代码的运行结果。


猜你喜欢
- 本文介绍了Android定时器Timer的停止和重启实现代码,分享给大家,具体如下:7月份做了一个项目,利用自定义控件呈现一幅动画,当时使用
- 前言春节要到了,看惯了前端各种小游戏,确实做得很好,很精致。但是我也要为后端程序员稍微做一点贡献,做一款java版本的【年兽大作战】。这个游
- hashCode()和equals()方法可以说是Java完全面向对象的一大特色.它为我们的编程提供便利的同时也带来了很多危险.这篇文章我们
- 在我们平时写程序的时候,有些参数是经常改变的,而这种改变不是我们预知的。比如说我们开发了一个操作数据库的模块,在开发的时候我们连接本地的数据
- springboot2启动时执行,初始化(或定时任务)servletContext需求:springboot 启动后自动执行,初始化数据,并
- 在日常的app使用中,我们会在android 的app中看见 热门标签等自动换行的流式布局,今天,我们就来看看如何自定义一个类似热门标签那样
- 一、前言做新应用就是这样,会遇到各种问题,昨天刚解决了加载某一个类时候抛出了 class is not visible from class
- 本文实例讲述了C#键盘鼠标钩子的实现方法。分享给大家供大家参考。具体实现方法如下:using System;using System.Col
- 1. 判断允许上传文件的 文件后缀/图片后缀/相片后缀 和 其它工具类import org.springframework.stereoty
- 下表总结了Java NIO和IO之间的主要差别,我会更详细地描述表中每部分的差异。IO &nb
- java @Value("${}")获取不到配置文件中值1、property.yml配置spring: ma
- XSS是一种经常出现在web应用中的计算机安全漏洞,具体信息请自行Google。本文只分享在Spring Cloud Gateway中执行通
- Object是类层次结构的根,每个类都可以将Object作为超类。所有类都直接或者间接的继承自该类构造方法:public Object()回
- 一般而言,一个项目部署的由:拉取代码->构建->测试->打包->部署等过程组成,如果我们经常需要部署项目,特别是在微
- 相信绝大多数.NET玩家和我一样,常常使用Timer这个对象,而在WPF中使用DispatcherTimer的人也是很多,Dispatche
- 其实就只有一条sql语句<select id = "search" resultType = "mate
- Android 自带的资源字符串资源:定义字符串资源在 <string.xml >;在JAVA 中 使用字符串资源,通过 get
- 前言上一篇我们介绍了 Animation 和 AnimationController 的使用,这是最
- 本文总结了我在学习hibernate的过程中,解决hibernate懒加载问题的四种方式。所谓懒加载(lazy)就是延时加载,延迟加载。什么
- 本文实例讲述了Android编程使用AlarmManager设置闹钟的方法。分享给大家供大家参考,具体如下:package com.Aina