Показать сообщение отдельно
  #3 (permalink)  
Старый 11.07.2012, 11:42
Аватар для Shasoft
Профессор
Отправить личное сообщение для Shasoft Посмотреть профиль Найти все сообщения от Shasoft
 
Регистрация: 03.03.2009
Сообщений: 156

Как структуру. Нужно учитывать не только пробелы, но и разный регистр ключевых слов.
В общем для сравнения разделил текст на лексемы двух типов: с учетом регистра (обрамлены символами ' или `) и без учета регистра (всё остальное).
Разбиваю текст на эти лексемы и потом уже их сравниваю. Вроде работает.
// Разобьем текст на лексемы
			function _parse(text) 
			{
				var res=[];
				res.pushS=function(s){
					if( s.length>0 )
						this.push(s);
				};
				//
				var s="";
				for(var i=0;i<text.length;i++)
				{
					var ch=text.charAt(i);
					switch(ch)
					{	// регистрозависимый текст
						case "'":
						case "`":
						{	
							res.pushS(s);
							var e=text.indexOf(ch,i+1);
							res.pushS( text.substring(i+1,e) );
							s = "";							
							//
							i = e;
						}
						break;
						// Символы окончания лексемы
						case " ":
						case "\r":
						case "\n":
						{
							res.pushS(s.toLowerCase());						
							s="";
						}
						break;
						// Просто добавляем символ к лексеме
						default:
						{
							s+=ch;
						}
						break;
					}
				}
				res.pushS(s);
				//
				return res;
			}

Последний раз редактировалось Shasoft, 11.07.2012 в 11:46.
Ответить с цитированием