[C-sharp: showcolumns] · 40 · ····· · 90 ··· · 140 · 150
/// </Summary>
/// <Param name = "str"> numeric string </param>
/// <Returns> string converted to an uppercase Chinese character or error message </returns>
Public string ConvertSum (string str)
{
If (! IsPositveDecimal (str ))
Return "the input is not a positive number! ";
If (Double. Parse (str)> 999999999999.99)
Return "the number is too large to be converted. Please enter the amount below 1 trillion yuan ";
Char [] ch = new char [1];
Ch [0] = '.'; // decimal point
String [] splitstr = null; // defines the string array separated by the decimal point
Splitstr = str. Split (ch [0]); // Split string by decimal point
If (splitstr. Length = 1) // only the integer part is available.
Return ConvertData (str) + "round ";
Else // has a decimal part
{
String rstr;
Rstr = ConvertData (splitstr [0]) + "circle"; // convert the integer
Rstr + = ConvertXiaoShu (splitstr [1]); // converts the decimal part
Return rstr;
}
}
/// <Summary>
/// Determine whether the string is a positive number.
/// </Summary>
/// <Param name = "str"> judge string </param>
/// <Returns> if it is a number, true is returned; otherwise, false is returned. </returns>
Public bool IsPositveDecimal (string str)
{
Decimal d;
Try
{
D = Decimal. Parse (str );
}
Catch (Exception)
{
Return false;
}
If (d> 0)
Return true;
Else
Return false;
}
/// <Summary>
/// Convert a number (integer)
/// </Summary>
/// <Param name = "str"> integer numeric string to be converted </param>
/// <Returns> converts a string to an uppercase string of Chinese characters </returns>
Public string ConvertData (string str)
{
String tmpstr = "";
String rstr = "";
Int strlen = str. Length;
If (strlen <= 4) // The number length is less than four digits
{
Rstr = ConvertDigit (str );
}
Else
{
If (strlen <= 8) // The number must be greater than four digits and smaller than eight digits.
{
Tmpstr = str. Substring (strlen-4, 4); // extract the last four digits
Rstr = ConvertDigit (tmpstr); // converts the last four digits.
Tmpstr = str. Substring (0, strlen-4); // extract other digits
// Connect the converted numbers with values
Rstr = String. Concat (ConvertDigit (tmpstr) + "reverse", rstr );
Rstr = rstr. Replace ("zero percent", "percent ");
Rstr = rstr. Replace ("zero", "zero ");
}
Else
If (strlen <= 12) // The number is greater than eight digits and smaller than twelve digits.
{
Tmpstr = str. Substring (strlen-4, 4); // extract the last four digits
Rstr = ConvertDigit (tmpstr); // converts the last four digits.
Tmpstr = str. Substring (strlen-8, 4); // truncates four digits.
Rstr = String. Concat (ConvertDigit (tmpstr) + "reverse", rstr );
Tmpstr = str. Substring (0, strlen-8 );
Rstr = String. Concat (ConvertDigit (tmpstr) + "reverse", rstr );
Rstr = rstr. Replace ("zero percent", "percent ");
Rstr = rstr. Replace ("zero percentage", "zero ");
Rstr = rstr. Replace ("zero", "zero ");
Rstr = rstr. Replace ("zero", "zero ");
}
}
Strlen = rstr. Length;
If (strlen> = 2)
{
Switch (rstr. Substring (strlen-2, 2 ))
{
Case "break zero": rstr = rstr. Substring (0, strlen-2) + "break"; break;
Case "break zero": rstr = rstr. Substring (0, strlen-2) + "break"; break;
Case "break zero": rstr = rstr. Substring (0, strlen-2) + "break"; break;
Case "break zero": rstr = rstr. Substring (0, strlen-2) + "break"; break;
}
}
Return rstr;
}
/// <Summary>
/// Convert the number (decimal part)
/// </Summary>
/// <Param name = "str"> decimal part of the numeric string to be converted </param>
/// <Returns> converts a string to an uppercase string of Chinese characters </returns>
Public string ConvertXiaoShu (string str)
{
Int strlen = str. Length;
String rstr;
If (strlen = 1)
{
Rstr = ConvertChinese (str) + "";
Return rstr;
}
Else
{
String tmpstr = str. Substring (0, 1 );
Rstr = ConvertChinese (tmpstr) + "";
Tmpstr = str. Substring (1, 1 );
Rstr + = ConvertChinese (tmpstr) + "points ";
Rstr = rstr. Replace ("0 ","");
Rstr = rstr. Replace (" ","");
Return rstr;
}
}
/// <Summary>
/// Convert numbers
/// </Summary>
/// <Param name = "str"> converted string (within four digits) </param>
/// <Returns> </returns>
Public string ConvertDigit (string str)
{
Int strlen = str. Length;
String rstr = "";
Switch (strlen)
{
Case 1: rstr = ConvertChinese (str); break;
Case 2: rstr = Convert2Digit (str); break;
Case 3: rstr = Convert3Digit (str); break;
Case 4: rstr = Convert4Digit (str); break;
}
Rstr = rstr. Replace ("pick up", "pick up ");
Strlen = rstr. Length;
Return rstr;
}
/// <Summary>
/// Convert four digits
/// </Summary>
Public string Convert4Digit (string str)
{
String str1 = str. Substring (0, 1 );
String str2 = str. Substring (1, 1 );
String str3 = str. Substring (2, 1 );
String str4 = str. Substring (3, 1 );
String rstring = "";
Rstring + = ConvertChinese (str1) + "character ";
Rstring + = ConvertChinese (str2) + "character ";
Rstring + = ConvertChinese (str3) + "pick up ";
Rstring + = ConvertChinese (str4 );
Rstring = rstring. Replace ("0", "0 ");
Rstring = rstring. Replace ("0", "0 ");
Rstring = rstring. Replace ("Zero pick", "zero ");
Rstring = rstring. Replace ("zero", "zero ");
Rstring = rstring. Replace ("zero", "zero ");
Rstring = rstring. Replace ("zero", "zero ");
Return rstring;
}
/// <Summary>
/// Convert three digits
/// </Summary>
Public string Convert3Digit (string str)
{
String str1 = str. Substring (0, 1 );
String str2 = str. Substring (1, 1 );
String str3 = str. Substring (2, 1 );
String rstring = "";
Rstring + = ConvertChinese (str1) + "character ";
Rstring + = ConvertChinese (str2) + "pick up ";
Rstring + = ConvertChinese (str3 );
Rstring = rstring. Replace ("0", "0 ");
Rstring = rstring. Replace ("Zero pick", "zero ");
Rstring = rstring. Replace ("zero", "zero ");
Rstring = rstring. Replace ("zero", "zero ");
Return rstring;
}
/// <Summary>
/// Convert two digits
/// </Summary>
Public string Convert2Digit (string str)
{
String str1 = str. Substring (0, 1 );
String str2 = str. Substring (1, 1 );
String rstring = "";
Rstring + = ConvertChinese (str1) + "pick up ";
Rstring + = ConvertChinese (str2 );
Rstring = rstring. Replace ("Zero pick", "zero ");
Rstring = rstring. Replace ("zero", "zero ");
Return rstring;
}
/// <Summary>
/// Convert a digit into a Chinese uppercase Digit
/// </Summary>
Public string ConvertChinese (string str)
{
// "The number of points in the circle between the two accounts is different"
String cstr = "";
Switch (str)
{
Case "0": cstr = "0"; break;
Case "1": cstr = "1"; break;
Case "2": cstr = "II"; break;
Case "3": cstr = ""; break;
Case "4": cstr = "Si"; break;
Case "5": cstr = "Wu"; break;
Case "6": cstr = ""; break;
Case "7": cstr = "break"; break;
Case "8": cstr = "break"; break;
Case "9": cstr = "break"; break;
}
Return (cstr );
}
From caoruyi15's column