1. 程式人生 > >C語言判斷字串內容

C語言判斷字串內容

// 判斷字串開頭是不是回車換行('\n'或'\r'),如果不是返回0,如果是,返回有幾個這樣的字元。
int isNewLine(char* acStr)
{
	int iSize = 0;
	if(acStr[0] == '\n' || acStr[0] == '\r')
	{
		iSize ++; acStr ++;
		while(acStr[0] == '\n' || acStr[0] == '\r') {iSize ++; acStr ++;}
	}

	return iSize;
}
// 判斷字串是不是空白字元(小於 '!' 大於 '\0' 的字元),如果不是返回0,如果是,返回有幾個這樣的字元。
int isSpace(char* acStr)
{
	int iSize = 0;
	if((acStr[0] < '!') && (acStr[0] > '\0'))
	{
		iSize ++; acStr ++;
		while((acStr[0] < '!') && (acStr[0] > '\0')) {iSize ++; acStr++;}
	}
	return iSize;
}
// 判斷字串是不是整數(小於 '9' 大於 '0' 的字元),如果不是返回0,如果是,返回有幾個這樣的字元。
int isInt(char* acStr)
{
	int iSize = 0;
	if(acStr[0] >= '0' && acStr[0] <= '9')
	{
		iSize ++; acStr ++;
		while(acStr[0] >= '0' && acStr[0] <= '9') {iSize ++; acStr ++;}
	}

	return iSize;
}
// 判斷字串是不是小數(小於 '9' 大於 '0' 的字元,並且數字中間有一個點),如果不是返回0,如果是,返回有幾個這樣的字元。
int isFloat(char* acStr)
{
	int iSize = 0, iDotNum = 0;
	if(acStr[0] >= '0' && acStr[0] <= '9')
	{
		iSize ++; acStr ++;
		while((acStr[0] >= '0' && acStr[0] <= '9') || acStr[0] == '.')
		{
			if(acStr[0] == '.')
				iDotNum ++;
			if(iDotNum > 1)
				break;
			iSize ++;
			acStr ++;
		}
	}

	return iSize;
}
// 判斷字串是不是十六進位制數字(以0x開頭,含有'0'-'9','A'-'F'的字串),如果不是返回0,如果是,返回有幾個這樣的字元。
int isHex(char* acStr)
{
	int iByteNum = 0;
	if(acStr[0] == '0' && (acStr[1] == 'x' || acStr[1] == 'X'))
	{
		iByteNum += 2;
		acStr += 2;
		while(acStr[0] !='\0')
		{
			if(!((acStr[0]>='0' && acStr[0]<='9') || (acStr[0]>='a' && acStr[0]<='f') || (acStr[0]>='A' && acStr[0]<='F')))
				break;
			else
				iByteNum ++;
			acStr ++;
		}
	}
	return iByteNum;
}
// 判斷字串是否沒到結尾
_Bool isNotEnd(char* acStr)
{
	if(acStr[0] == '\0')
		return 0;
	else
		return 1;
}
// 判斷字串是否到結尾了
_Bool isEnd(char* acStr)
{
	if(acStr[0] == '\0')
		return 1;
	else
		return b;
}
// 如果此指標指向的字串的開頭是一個英文單詞,返回英文單詞字母個數,否則返回 0
int isWord(char* acStr)
{
	int iNum = 0;
	if((acStr[0] >= 'A' && acStr[0] <= 'Z') || (acStr[0] >= 'a' && acStr[0] <= 'z'))
	{
		iNum ++;
		acStr ++;
		while(acStr[0] !='\0')
		{
			if(!(
				(acStr[0] >= '0' && acStr[0] <= '9') ||
				(acStr[0] >= 'A' && acStr[0] <= 'Z') ||
				(acStr[0] >= 'a' && acStr[0] <= 'z') ||
				(acStr[0] == '-') || 
				(acStr[0] == '\'')
			))
				break;
			else
				iNum ++;
			acStr ++;
		}
	}
	return iNum;
}
// 如果此指標指向的字串的開頭不是一個英文單詞,返回英文單詞前有幾個位元組,否則返回 0
int isNotWord(char* acStr)
{
	int iNum = 0;
	if((acStr[0] < 'A') || (acStr[0] > 'Z' && acStr[0] < 'a') || (acStr[0] > 'z'))
	{
		iNum ++;
		acStr ++;
		while(acStr[0] !='\0')
		{
			if(
				(acStr[0] >= 'A' && acStr[0] <= 'Z') ||
				(acStr[0] >= 'a' && acStr[0] <= 'z')
			)
				break;
			else
				iNum ++;
			acStr ++;
		}
	}
	return iNum;
}
// 如果此指標指向的字串的開頭是字串(被雙引號包含),返回有幾個位元組,否則返回 0
int isString(char* acStr)
{
	int iByteNum = 0;
	char* pcSearchA = acStr;
	char* pcSearchB = NULL;
	if(pcSearchA[0] == '\"' && pcSearchA[-1] != '\\')
	{
		pcSearchB = pcSearchA + 1;
		while(pcSearchB[0] !='\0')
		{
			if(pcSearchB[0] == '\"' && pcSearchB[-1] != '\\')
			{
				iByteNum = pcSearchB - pcSearchA + 1;
				return iByteNum;
			}
			pcSearchB++;
		}
		iByteNum = (U64)(pcSearchB - pcSearchA);
	}
	return iByteNum;
}