예제 #1
0
	/*************************************************************************
	Return the index of the first character of the word after the word
	at 'idx'.	
	*************************************************************************/
	String32::size_type TextUtils::getNextWordStartIdx(const String32& str, String32::size_type idx)
	{
		String32::size_type str_len = str.length();

		// do some checks for simple cases
		if ((idx >= str_len) || (str_len == 0))
		{
			return str_len;
		}

		// is character at 'idx' alphanumeric
		if (String32::npos != DefaultAlphanumerical.find(str[idx]))
		{
			// find position of next character that is not alphanumeric
			idx = str.find_first_not_of(DefaultAlphanumerical, idx);
		}
		// is character also not whitespace (therefore a symbol)
		else if (String32::npos == DefaultWhitespace.find(str[idx]))
		{
			// find index of next character that is either alphanumeric or whitespace
			idx = str.find_first_of(DefaultAlphanumerical + DefaultWhitespace, idx);
		}

		// check result at this stage.
		if (String32::npos == idx)
		{
			idx = str_len;
		}
		else
		{
			// if character at 'idx' is whitespace
			if (String32::npos != DefaultWhitespace.find(str[idx]))
			{
				// find next character that is not whitespace
				idx = str.find_first_not_of(DefaultWhitespace, idx);
			}

			if (String32::npos == idx)
			{
				idx = str_len;
			}

		}

		return idx;
	}
예제 #2
0
	/*************************************************************************
	Trim all characters from the set specified in \a chars from the
	begining of 'str'.	
	*************************************************************************/
	void TextUtils::trimLeadingChars(String32& str, const String32& chars)
	{
		String32::size_type idx = str.find_first_not_of(chars);

		if (idx != String32::npos)
		{
			str.erase(0, idx);
		}
		else
		{
			str.erase();
		}

	}
예제 #3
0
	/*************************************************************************
	return a String32 containing the the next word in a String32.
	*************************************************************************/
	String32 TextUtils::getNextWord(const String32& str, String32::size_type start_idx, const String32& delimiters)
	{
		String32::size_type	word_start = str.find_first_not_of(delimiters, start_idx);

		if (word_start == String32::npos)
		{
			word_start = start_idx;
		}

		//String32::size_type	word_end = str.find_first_of(delimiters, word_start);

		//if (word_end == String32::npos)
		//{
		//	word_end = str.length();
		//}

		//return str.substr(start_idx, (word_end - start_idx));
		return str.substr(start_idx, 1);
	}