154 lines
3.5 KiB
C#
154 lines
3.5 KiB
C#
|
/*
|
||
|
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||
|
* contributor license agreements. See the NOTICE file distributed with
|
||
|
* this work for additional information regarding copyright ownership.
|
||
|
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||
|
* (the "License"); you may not use this file except in compliance with
|
||
|
* the License. You may obtain a copy of the License at
|
||
|
*
|
||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||
|
*
|
||
|
* Unless required by applicable law or agreed to in writing, software
|
||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
|
* See the License for the specific language governing permissions and
|
||
|
* limitations under the License.
|
||
|
*/
|
||
|
|
||
|
using System;
|
||
|
|
||
|
using NUnit.Framework;
|
||
|
|
||
|
namespace Lucene.Net.Util
|
||
|
{
|
||
|
|
||
|
|
||
|
public class English
|
||
|
{
|
||
|
|
||
|
public static System.String IntToEnglish(int i)
|
||
|
{
|
||
|
System.Text.StringBuilder result = new System.Text.StringBuilder();
|
||
|
IntToEnglish(i, result);
|
||
|
return result.ToString();
|
||
|
}
|
||
|
|
||
|
public static void IntToEnglish(int i, System.Text.StringBuilder result)
|
||
|
{
|
||
|
if (i == 0)
|
||
|
{
|
||
|
result.Append("zero");
|
||
|
return ;
|
||
|
}
|
||
|
if (i < 0)
|
||
|
{
|
||
|
result.Append("minus ");
|
||
|
i = - i;
|
||
|
}
|
||
|
if (i >= 1000000000)
|
||
|
{
|
||
|
// billions
|
||
|
IntToEnglish(i / 1000000000, result);
|
||
|
result.Append("billion, ");
|
||
|
i = i % 1000000000;
|
||
|
}
|
||
|
if (i >= 1000000)
|
||
|
{
|
||
|
// millions
|
||
|
IntToEnglish(i / 1000000, result);
|
||
|
result.Append("million, ");
|
||
|
i = i % 1000000;
|
||
|
}
|
||
|
if (i >= 1000)
|
||
|
{
|
||
|
// thousands
|
||
|
IntToEnglish(i / 1000, result);
|
||
|
result.Append("thousand, ");
|
||
|
i = i % 1000;
|
||
|
}
|
||
|
if (i >= 100)
|
||
|
{
|
||
|
// hundreds
|
||
|
IntToEnglish(i / 100, result);
|
||
|
result.Append("hundred ");
|
||
|
i = i % 100;
|
||
|
}
|
||
|
if (i >= 20)
|
||
|
{
|
||
|
switch (i / 10)
|
||
|
{
|
||
|
|
||
|
case 9: result.Append("ninety"); break;
|
||
|
|
||
|
case 8: result.Append("eighty"); break;
|
||
|
|
||
|
case 7: result.Append("seventy"); break;
|
||
|
|
||
|
case 6: result.Append("sixty"); break;
|
||
|
|
||
|
case 5: result.Append("fifty"); break;
|
||
|
|
||
|
case 4: result.Append("forty"); break;
|
||
|
|
||
|
case 3: result.Append("thirty"); break;
|
||
|
|
||
|
case 2: result.Append("twenty"); break;
|
||
|
}
|
||
|
i = i % 10;
|
||
|
if (i == 0)
|
||
|
result.Append(" ");
|
||
|
else
|
||
|
result.Append("-");
|
||
|
}
|
||
|
switch (i)
|
||
|
{
|
||
|
|
||
|
case 19: result.Append("nineteen "); break;
|
||
|
|
||
|
case 18: result.Append("eighteen "); break;
|
||
|
|
||
|
case 17: result.Append("seventeen "); break;
|
||
|
|
||
|
case 16: result.Append("sixteen "); break;
|
||
|
|
||
|
case 15: result.Append("fifteen "); break;
|
||
|
|
||
|
case 14: result.Append("fourteen "); break;
|
||
|
|
||
|
case 13: result.Append("thirteen "); break;
|
||
|
|
||
|
case 12: result.Append("twelve "); break;
|
||
|
|
||
|
case 11: result.Append("eleven "); break;
|
||
|
|
||
|
case 10: result.Append("ten "); break;
|
||
|
|
||
|
case 9: result.Append("nine "); break;
|
||
|
|
||
|
case 8: result.Append("eight "); break;
|
||
|
|
||
|
case 7: result.Append("seven "); break;
|
||
|
|
||
|
case 6: result.Append("six "); break;
|
||
|
|
||
|
case 5: result.Append("five "); break;
|
||
|
|
||
|
case 4: result.Append("four "); break;
|
||
|
|
||
|
case 3: result.Append("three "); break;
|
||
|
|
||
|
case 2: result.Append("two "); break;
|
||
|
|
||
|
case 1: result.Append("one "); break;
|
||
|
|
||
|
case 0: result.Append(""); break;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
[STAThread]
|
||
|
public static void Main(System.String[] args)
|
||
|
{
|
||
|
System.Console.Out.WriteLine(IntToEnglish(System.Int32.Parse(args[0])));
|
||
|
}
|
||
|
}
|
||
|
}
|