2013-11-12 5 views
0

У меня есть база данных, которая совместно используется программой Windows и страницами ASP. В программе Windows была введена строка, которая содержит несколько символов CR/LF. Он отображается как ожидалось в текстовом поле, но метод javascript indexOf() не может найти строку внутри сообщения. Метод indexOf() работает для любой другой строки, не содержащей символов CR/LF. Что мне нужно сделать, чтобы узнать, содержится ли строка в общем сообщении?indexOf() Не работает, если строка содержит возврат каретки/подачу линии

Например, если сообщение содержит:

вашей кредитной карты будет читать " Компания ". Пожалуйста, используйте номер заказа при обращении к нам с вопросами об этом счете.

Благодарим вас за сотрудничество с компанией.
Оставьте ленту на месте в течение 24 часов перед снятием.

и струна Я хочу, чтобы соответствовать это:

вашей кредитной карты будет читать " Компания ". Пожалуйста, используйте номер заказа при обращении к нам с вопросами об этом счете.

Благодарим вас за сотрудничество с компанией.

indexOf() возвращает -1. Я проверил, что строка, которую я ищу, содержит строку, которую я хочу найти.

Код, который не работает.

var index = message.indexOf(listbox.getItem(i).get_toolTip()); 

ответ

0

Я не знаю, почему это происходит, но в текстовом поле отображается встроенный CRLF, как и ожидалось, но просто назначая строку переменной и используя indexOf() возвращает -1 каждый раз, когда искомая строка содержит CRLF. Я прибегал к использованию метода encodeURI() при поиске строки и искомой строке до использования indexOf(), и это работает.

function messageContainsString(string) { 
    var orderMessage = $get('<%=uxMessageOrderMessage.ClientID%>') 
    if (orderMessage != null) { 
     var message = encodeURI(orderMessage.textContent); 
     if (message != null) { 
      return message.indexOf(encodeURI(string)) > -1; 
     } 
    } 
    return false; 
} 
0

Пара CR/LF действительно есть в строке, но когда движок рендеринга HTML выкладывает пункт, они рассматриваются как пробельные и игнорируются. Однако при поиске, однако, код не игнорирует символы CR/LF.

+0

Если я использую javascript для кодирования и отображения внутреннего текста из текстовой области, он отображает% 0D% 0A символов в строке. – jac

+0

Да, это будет CR/LF в строке. Вы не опубликовали свою функцию «get _toolTip()», поэтому очень сложно сказать, что происходит. – Pointy

Смежные вопросы