C++将1到100的英文单词转换为数字

1-10:one、two 、three 、four 、five 、six 、seven 、eight 、nine、 ten 。

11-19:eleven 、twelve 、thirteen 、fourteen 、fifteen 、sixteen 、seventeen、 eighteen、 nineteen 。

20-29:twenty 、twenty-one、 twenty-two 、twenty-three 、twenty-four 、twenty-five 、twenty-six 、twenty-seven、 twenty-eight 、twenty-nine 。

30-39:thirty、 thirty-one 、thirty-two 、thirty-three、 thirty-four 、thirty-five、 thirty-six、 thirty-seven 、thirty-eight 、thirty-nine 。

40-49:forty、 forty-one 、forty-two 、forty-three 、forty-four 、forty-five 、forty-six 、forty-seven 、forty-eight、 forty-nine 。

50-59:fifty、 fifty-one、 fifty-two 、fifty-three 、fifty-four 、fifty-five 、fifty-six、 fifty-seven 、fifty-eight、 fifty-nine 。

60-69:sixty、 sixty-one 、sixty-two 、sixty-three 、sixty-four 、sixty-five、 sixty-six 、sixty-seven 、sixty-eight 、sixty-nine 。

70-79:seventy 、seventy-one、 seventy-two 、seventy-three 、seventy-four、 seventy-five、 seventy-six 、seventy-seven 、seventy-eight 、seventy-nine 。

80-89:eighty 、eighty-one、 eighty-two、 eighty-three、 eighty-four 、eighty-five 、eighty-six 、eighty-seven、 eighty-eight 、eighty-nine 。

90-99:ninety 、ninety-one 、ninety-two 、ninety-three 、ninety-four 、ninety-five 、ninety-six 、ninety-seven 、ninety-eight 、ninety-nine 。

100:one hundred。

规则:

  1、一到十三,需要直接记住,无规律可寻。

  2、十四到十九就是在英文单词四到九之后加上-teen。

  3、二十、三十、四十、五十、六十、七十、八十、九十都是以-ty结尾。

  4、二十一到二十九、三十一到三十九、四十一到四十九、五十一到五十九、六十一到六十九、七十一到七十九、八十一到八十九、九十一到九十九,就是在二十、三十、四十、五十、六十、七十、八十、九十英语的后面加上one到nine。

//解析组合的数字单词
bool CUnisound::ParseEnNumber(const char *pData,int &iNum)
{
	m_Log.LogDebug("[%s][%s][%d] ParseEnNumber begin", __FILE__, __FUNCTION__, __LINE__);
	string strData = pData;
	iNum = 0;
	if((int)strData.find("twenty") >= 0 || (int)strData.find("TWENTY") >= 0)
		iNum += 20;
	else if((int)strData.find("thirty") >= 0 || (int)strData.find("THIRTY") >= 0)
		iNum += 30;
	else if((int)strData.find("forty") >= 0 || (int)strData.find("FORTY") >= 0)
		iNum += 40;
	else if((int)strData.find("fifty") >= 0 || (int)strData.find("FIFTY") >= 0)
		iNum += 50;
	else if((int)strData.find("sixty") >= 0 || (int)strData.find("SIXTY") >= 0)
		iNum += 60;
	else if((int)strData.find("seventy") >= 0 || (int)strData.find("SEVENTY") >= 0)
		iNum += 70;
	else if((int)strData.find("eighty") >= 0 || (int)strData.find("EIGHTY") >= 0)
		iNum += 80;
	else if((int)strData.find("ninety") >= 0 || (int)strData.find("NINETY") >= 0)
		iNum += 90;
	else if((int)strData.find("two hundred") >= 0 || (int)strData.find("TWO HUNDRED") >= 0)
		iNum += 200;
	else if((int)strData.find("hundred") >= 0 || (int)strData.find("HUNDRED") >= 0)
		iNum += 100;
	else
	{
		if(ParseAloneEnNumber(pData,iNum))
			return true;
		else
			return false;
	}
	ParseAloneEnNumber(pData,iNum);//将组合的单词加上单个的单词 例如:twenty one = 20 + 1
	return true;
}

//解析单个的数字单词
bool CUnisound::ParseAloneEnNumber(const char *pData,int &iNum)
{
	string strData = pData;
	if((int)strData.find("one") >= 0 || (int)strData.find("ONE") >= 0)
		iNum += 1;
	else if((int)strData.find("two") >= 0 || (int)strData.find("TWO") >= 0)
		iNum += 2;
	else if((int)strData.find("three") >= 0 || (int)strData.find("THREE") >= 0)
		iNum += 3;
	else if((int)strData.find("four") >= 0 || (int)strData.find("FOUR") >= 0)
		iNum += 4;
	else if((int)strData.find("five") >= 0 || (int)strData.find("FIVE") >= 0)
		iNum += 5;
	else if((int)strData.find("six") >= 0 || (int)strData.find("SIX") >= 0)
		iNum += 6;
	else if((int)strData.find("seven") >= 0 || (int)strData.find("SEVEN") >= 0)
		iNum += 7;
	else if((int)strData.find("eight") >= 0 || (int)strData.find("EIGHT") >= 0)
		iNum += 8;
	else if((int)strData.find("nine") >= 0 || (int)strData.find("NINE") >= 0)
		iNum += 9;
	else if((int)strData.find("ten") >= 0 || (int)strData.find("TEN") >= 0)
		iNum += 10;
	else if((int)strData.find("eleven") >= 0 || (int)strData.find("ELEVEN") >= 0)
		iNum += 11;
	else if((int)strData.find("twelve") >= 0 || (int)strData.find("TWELVE") >= 0)
		iNum += 12;
	else if((int)strData.find("thirteen") >= 0 || (int)strData.find("THIRTEEN") >= 0)
		iNum += 13;
	else if((int)strData.find("fourteen") >= 0 || (int)strData.find("FOURTEEN") >= 0)
		iNum += 14;
	else if((int)strData.find("fifteen") >= 0 || (int)strData.find("FIFTEEN") >= 0)
		iNum += 15;
	else if((int)strData.find("sixteen") >= 0 || (int)strData.find("SIXTEEN") >= 0)
		iNum += 16;
	else if((int)strData.find("seventeen") >= 0 || (int)strData.find("SEVENTEEN") >= 0)
		iNum += 17;
	else if((int)strData.find("eighteen") >= 0 || (int)strData.find("EIGHTEEN") >= 0)
		iNum += 18;
	else if((int)strData.find("nineteen") >= 0 || (int)strData.find("NINETEEN") >= 0)
		iNum += 19;
	else
		return false;

	return true;
}

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值