VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 编程开发 > C#编程 >
  • C#教程之开源项目Humanizer介绍(3)

本站最新发布   C#从入门到精通
试听地址  
https://www.xin3721.com/eschool/CSharpxin3721/

1.Ordinalize() => "1st"
5.Ordinalize() => "5th"

您还可以在数字字符串上调用Ordinalize并获得相同的结果:“ 21” .Ordinalize()=>“ 21st”

序数化还支持两种形式的语法性别。 您可以将一个参数传递给Ordinalize,以指定数字应以哪种性别输出。可能的值为GrammaticalGender.Masculine,GrammmicalGender.Feminine和GrammaticalGender.Neuter:

// for Brazilian Portuguese locale
1.Ordinalize(GrammaticalGender.Masculine) => ""
1.Ordinalize(GrammaticalGender.Feminine) => ""
1.Ordinalize(GrammaticalGender.Neuter) => ""
"2".Ordinalize(GrammaticalGender.Masculine) => ""
"2".Ordinalize(GrammaticalGender.Feminine) => ""
"2".Ordinalize(GrammaticalGender.Neuter) => ""

显然,这仅适用于某些文化。 对于其他通过性别或根本不通过的人,结果没有任何区别。

标题化

Titleize将输入的单词转换为Title大小写; 等效于“某些标题”。Humanize(LetterCasing.Title)

Pascalize

Pascalize将输入的单词转换为UpperCamelCase,还删除下划线和空格:

"some_title for something".Pascalize() => "SomeTitleForSomething"

Camelize

Camelize的行为与Pascalize相同,但第一个字符为小写:

"some_title for something".Camelize() => "someTitleForSomething"

下划线

Underscore用下划线分隔输入的单词:

"SomeTitle".Underscore() => "some_title"

Dasherize & Hyphenate

Dasherize和Hyphenate用下划线替换下划线:

"some_title".Dasherize() => "some-title"
"some_title".Hyphenate() => "some-title"
Kebaberize
Kebaberize用连字符分隔输入的单词,所有单词都转换为小写
"SomeText".Kebaberize() => "some-text"

 

13、流利的日期

Humanizer提供了一种流利的API来处理DateTime和TimeSpan,如下所示:

TimeSpan方法:

2.Milliseconds() => TimeSpan.FromMilliseconds(2)
2.Seconds() => TimeSpan.FromSeconds(2)
2.Minutes() => TimeSpan.FromMinutes(2)
2.Hours() => TimeSpan.FromHours(2)
2.Days() => TimeSpan.FromDays(2)
2.Weeks() => TimeSpan.FromDays(14)

每月或一年都没有流利的API,因为一个月可能有28到31天,一年可能是365或366天。

您可以使用这些方法来替换

DateTime.Now.AddDays(2).AddHours(3).AddMinutes(-5)

DateTime.Now + 2.Days() + 3.Hours() - 5.Minutes()

还可以使用三类流利的方法来处理DateTime:

In.TheYear(2010) // Returns the first of January of 2010
In.January // Returns 1st of January of the current year
In.FebruaryOf(2009) // Returns 1st of February of 2009

In.One.Second //  DateTime.UtcNow.AddSeconds(1);
In.Two.SecondsFrom(DateTime dateTime)
In.Three.Minutes // With corresponding From method
In.Three.Hours // With corresponding From method
In.Three.Days // With corresponding From method
In.Three.Weeks // With corresponding From method
In.Three.Months // With corresponding From method
In.Three.Years // With corresponding From method

On.January.The4th // Returns 4th of January of the current year
On.February.The(12) // Returns 12th of Feb of the current year

和一些扩展方法:

var someDateTime = new DateTime(2011, 2, 10, 5, 25, 45, 125);

// Returns new DateTime(2008, 2, 10, 5, 25, 45, 125) changing the year to 2008
someDateTime.In(2008)

// Returns new DateTime(2011, 2, 10, 2, 25, 45, 125) changing the hour to 2:25:45.125
someDateTime.At(2)

// Returns new DateTime(2011, 2, 10, 2, 20, 15, 125) changing the time to 2:20:15.125
someDateTime.At(2, 20, 15)

// Returns new DateTime(2011, 2, 10, 12, 0, 0) changing the time to 12:00:00.000
someDateTime.AtNoon()

// Returns new DateTime(2011, 2, 10, 0, 0, 0) changing the time to 00:00:00.000
someDateTime.AtMidnight()

显然,您也可以将这些方法链接在一起。 例如 2010年11月13日在中午+ 5分钟()

 

14、数字到数字

Humanizer提供了一种流畅的API,该API以更清晰的方式生成(通常是很大的)数字:

1.25.Billions() => 1250000000
3.Hundreds().Thousands() => 300000

 

15、数字到单词

Humanizer可以使用ToWords扩展名将数字更改为单词:

1.ToWords() => "one"
10.ToWords() => "ten"
11.ToWords() => "eleven"
122.ToWords() => "one hundred and twenty-two"
3501.ToWords() => "three thousand five hundred and one"

您还可以将第二个参数GrammaticalGender传递给ToWords,以指定应该输出数字的性别。可能的值为GrammaticalGender.Masculine,GrammaticalGender.Feminine和GrammaticalGender.Neuter:

// for Russian locale
1.ToWords(GrammaticalGender.Masculine) => "один"
1.ToWords(GrammaticalGender.Feminine) => "одна"
1.ToWords(GrammaticalGender.Neuter) => "одно"
// for Arabic locale
1.ToWords(GrammaticalGender.Masculine) => "واحد"
1.ToWords(GrammaticalGender.Feminine) => "واحدة"
1.ToWords(GrammaticalGender.Neuter) => "واحد"
(-1).ToWords() => "ناقص واحد"

显然,这仅适用于某些文化。 对于传递性别的其他人来说,结果没有任何区别。

另外,可以明确指定要使用的文化。 如果不是,则使用当前线程的当前UI文化。 这是一个例子:

11.ToWords(new CultureInfo("en")) => "eleven"
1.ToWords(GrammaticalGender.Masculine, new CultureInfo("ru")) => "один"

 

16、数字到序数词

这是将ToWords与Ordinalize混合在一起的一种。 您可以在数字上调用ToOrdinalWords以获得数字中单词的序号表示! 例如:

0.ToOrdinalWords() => "zeroth"
1.ToOrdinalWords() => "first"
2.ToOrdinalWords() => "second"
8.ToOrdinalWords() => "eighth"
10.ToOrdinalWords() => "tenth"
11.ToOrdinalWords() => "eleventh"
12.ToOrdinalWords() => "twelfth"
20.ToOrdinalWords() => "twentieth"
21.ToOrdinalWords() => "twenty first"
121.ToOrdinalWords() => "hundred and twenty first"

ToOrdinalWords也支持语法性别。 您可以将第二个参数传递给ToOrdinalWords以指定输出的性别。 可能的值为GrammaticalGender.Masculine,GrammmicalGender.Feminine和GrammaticalGender.Neuter:

// for Brazilian Portuguese locale
1.ToOrdinalWords(GrammaticalGender.Masculine) => "primeiro"
1.ToOrdinalWords(GrammaticalGender.Feminine) => "primeira"
1.ToOrdinalWords(GrammaticalGender.Neuter) => "primeiro"
2.ToOrdinalWords(GrammaticalGender.Masculine) => "segundo"
2.ToOrdinalWords(GrammaticalGender.Feminine) => "segunda"
2.ToOrdinalWords(GrammaticalGender.Neuter) => "segundo"
// for Arabic locale
1.ToOrdinalWords(GrammaticalGender.Masculine) => "الأول"
1.ToOrdinalWords(GrammaticalGender.Feminine) => "الأولى"
1.ToOrdinalWords(GrammaticalGender.Neuter) => "الأول"
2.ToOrdinalWords(GrammaticalGender.Masculine) => "الثاني"
2.ToOrdinalWords(GrammaticalGender.Feminine) => "الثانية"
2.ToOrdinalWords(GrammaticalGender.Neuter) => "الثاني"

显然,这仅适用于某些文化。 对于传递性别的其他人来说,结果没有任何区别。

另外,可以明确指定要使用的文化。 如果不是,则使用当前线程的当前UI文化。 这是一个例子:

10.ToOrdinalWords(new CultureInfo("en-US")) => "tenth"
1.ToOrdinalWords(GrammaticalGender.Masculine, new CulureInfo("pt-BR")) => "primeiro"

 

17、日期时间到序数词

这是Ordinalize的扩展

// for English UK locale
new DateTime(2015, 1, 1).ToOrdinalWords() => "1st January 2015"
new DateTime(2015, 2, 12).ToOrdinalWords() => "12th February 2015"
new DateTime(2015, 3, 22).ToOrdinalWords() => "22nd March 2015"
// for English US locale
new DateTime(2015, 1, 1).ToOrdinalWords() => "January 1st, 2015"
new DateTime(2015, 2, 12).ToOrdinalWords() => "February 12th, 2015"
new DateTime(2015, 3, 22).ToOrdinalWords() => "March 22nd, 2015"

ToOrdinalWords也支持语法大小写。 您可以将第二个参数传递给ToOrdinalWords以指定输出的大小写。 可能的值是GrammaticalCase.Nominative,GrammmicalCase.Genitive,GrammmicalCase.Dative,GrammmicalCase.Accusative,GrammmicalCase.Instrumental和GraammaticalGender。介词:

显然,这仅适用于某些文化。 对于其他人来说,通过案例不会对结果产生任何影响。

 

18、罗马数字

Humanizer可以使用ToRoman扩展名将数字更改为罗马数字。 数字1到10可以用罗马数字表示如下:

1.ToRoman() => "I"
2.ToRoman() => "II"
3.ToRoman() => "III"
4.ToRoman() => "IV"
5.ToRoman() => "V"
6.ToRoman() => "VI"
7.ToRoman() => "VII"
8.ToRoman() => "VIII"
9.ToRoman() => "IX"
10.ToRoman() => "X"

也可以使用FromRoman扩展名进行反向操作。

"I".FromRoman() => 1
"II".FromRoman() => 2
"III".FromRoman() => 3
"IV".FromRoman() => 4
"V".FromRoman() => 5

请注意,只有小于4000的整数才能转换为罗马数字。

 

19、公制数字
Humanizer可以使用ToMetric扩展名将数字更改为公制数字。 数字1、1230和0.1可以用公制数字表示,如下所示:
1d.ToMetric() => "1"
1230d.ToMetric() => "1.23k"
0.1d.ToMetric() => "100m"

也可以使用FromMetric扩展进行相反的操作。

1d.ToMetric() => "1"
1230d.ToMetric() => "1.23k"
      



  
相关教程