2009-07-24 137 views
0

我知道我可以使用子字符串或其他方法,但我只是好奇,如果有什麼東西可以替代?下面使其返回「09」數字格式字符串只顯示正確的2位數

String.Format({0:?}, 2009); 

順便說一句,我碰到一個好的小抄來試圖弄清楚這一點... http://john-sheehan.com/blog/wp-content/uploads/msnet-formatting-strings.pdf

+0

我不相信這是可能與內置的格式選項 – bdukes 2009-07-24 19:04:10

+0

爲什麼人們upvoting答案,我特意要求不給? – JeremyWeir 2009-07-24 20:59:45

回答

4

如果你有一些更復雜的合法需求,可以始終創建自己的自定義格式提供:http://msdn.microsoft.com/en-us/library/system.iformatprovider.aspx

然後,您可以在任何你想要的方式格式化字符串,並妥善封裝再利用的功能。

下面是一個例子:

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)); 

     } 
    } 
} 
2
(2009 % 100).ToString("00"); 
+1

不,只是顯示完整的「2009」 – bdukes 2009-07-24 19:03:37

+0

現在應該會更好。 – 2009-07-24 19:06:00

1

我99.9%肯定這不可能這樣做,除非你有存儲在一個DateTime年......

3

我真的認爲你應該這樣做:

String s = "2009"; 
s.Substring(s.Length - 2); 

沒有辦法格式化該字符串像你想限制的位數。

+1

+1我正要張貼確切的代碼片段 – 2009-07-24 19:05:43

4

我看到了這個問題,並在被火燒的危險,我想指出這一點:

如果你格式化日期時間,或者你已經有了一個日期你格式化你可以簡單地做一個ToString(「yy」)。同樣,如果你只處理幾年。

DateTime dt = new DateTime(2009, 1, 1); //any DateTime would do, really. 
return dt.ToString("yy"); //"09" 

但如果這是一些奇怪的仿製我想一個字符串業務的最後兩個字符,最快的路線是:

string numString = someInt.ToString(); 
return numString.Substring(numString.Length - 2); 
+0

我不會火焰你,但這些都是我不是在尋找,我只是想了解更多有關數字格式明顯的替代方法。 – JeremyWeir 2009-07-24 20:07:38