首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >数字格式字符串,仅显示右2位数字

数字格式字符串,仅显示右2位数字
EN

Stack Overflow用户
提问于 2009-07-24 18:56:44
回答 5查看 3.4K关注 0票数 0

我知道我可以使用子字符串或其他方法,但我只是好奇是否有什么东西可以替代?下面让它返回"09“

代码语言:javascript
复制
String.Format({0:?}, 2009);

顺便说一句,我在尝试解决这个问题时遇到了一个很好的小抄…http://john-sheehan.com/blog/wp-content/uploads/msnet-formatting-strings.pdf

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-07-24 19:20:45

如果您对更复杂的内容有合理的需求,您可以随时创建自己的自定义格式提供程序:http://msdn.microsoft.com/en-us/library/system.iformatprovider.aspx

然后,您可以将字符串格式化为您想要的任何模式,并适当地封装功能以便重用。

下面是一个示例:

代码语言:javascript
复制
class Program
{
    static void Main(string[] args)
    {
        var date = "2009";

        Console.Write(string.Format(new CustomFormatProvider(), "{0:YY}", date));

        Console.ReadKey();
    }

    public class CustomFormatProvider : IFormatProvider, ICustomFormatter
    {
        public object GetFormat(Type formatType)
        {
            if (formatType == typeof(ICustomFormatter))
                return this;
            else
                return null;
        }

        public string Format(string fmt, object arg, IFormatProvider formatProvider)
        {
            string year = arg.ToString();
            string result = string.Empty;
            fmt = fmt.Trim().ToUpper();

            if (fmt.Equals("YY")) 
                return year.Substring(2, 2);
            else if (fmt.Equals("YYYY"))
                return year;
            else 
                throw new FormatException(String.Format("{0} is not a valid format string.", fmt));

        }
    }
}
票数 4
EN

Stack Overflow用户

发布于 2009-07-24 19:12:11

我看到了这个问题,冒着被激怒的风险,我想指出这一点:

如果您正在格式化一个DateTime,或者您有一个要格式化的日期,您可以简单地执行一个ToString("yy")。同样的,如果你只需要处理几年。

代码语言:javascript
复制
DateTime dt = new DateTime(2009, 1, 1); //any DateTime would do, really.
return dt.ToString("yy"); //"09"

但是,如果这是某种奇怪的泛型,我想要字符串业务的最后两个字符,最快的路径是:

代码语言:javascript
复制
string numString = someInt.ToString();
return numString.Substring(numString.Length - 2);
票数 4
EN

Stack Overflow用户

发布于 2009-07-24 19:03:49

我真的认为你应该这样做:

代码语言:javascript
复制
String s = "2009";
s.Substring(s.Length - 2);

没有办法格式化该字符串以限制您想要的位数。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1179512

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档