2010-03-31 3 views
0

Мне нужно заменить текст, который находится на странице в теге тела. Я использую javascript, но при необходимости имеет jquery. Мне в основном нужно заменить тест ® (тест с зарегистрированным товарным знаком) с TEST ® или тесты ® с TESTS ®, и это может быть даже испытание с TEST ® или тесты с TESTS ®. Я могу загладить их, но мне не нравится работать со знаком ®, он хочет поместить дубликаты на те, которые уже есть. В принципе, все, что есть на странице с тестом или тестом, должно быть TEST ® или TESTS ®, если оно множественное. Любая помощь приветствуется.Javascript или jQuery заменить текст

EDIT:
Так что теперь у меня есть это:

var html = $('body').html(); 
var html = html.replace(/realtor(s)?(®)?/gi, function(m, s1, s2){ 
    var s = s1?s1.toUpperCase():""; 
    var reg = s2?s2:'®'; 
    return "REALTOR"+s+reg; 
}); 
$('body').html(html); 

Сво работает хорошо, кроме его дублирования ® на тех, которые уже были им какие-либо идеи о том, как не?

+0

только Google Javascript текста заменить первую ссылка приходит tizag.com тот вполне достаточно, чтобы сделать так, хороший момент Pointy – ant

+1

Проблемы с использованием '® 'или любой код escape-кода HTML состоит в том, что браузер переводит его в фактический символ. Чтобы перейти к этому символу с помощью строковых функций, используйте «®», но если вы используете совпадение, замените и т. Д., Вам нужно будет использовать значение unicode «\ u00ae». См. Мой ответ ниже. – Mottie

ответ

3

Как уже говорили, вы не сможете сравниться с ®, вам необходимо зарегистрироваться на
\u00ae.

кода вы предоставили потребность быть изменен на:

var html = $('body').html(); 
var html = html.replace(/realtor(s)?(\u00ae)?/gi, function(m, s1, s2){ 
    var s = s1?s1.toUpperCase():""; 
    var reg = s2?s2:'®'; 
    return "REALTOR"+s+reg; 
}); 
$('body').html(html); 
+0

Спасибо, что ты отлично работал. – ngreenwood6

0

Трудная часть здесь должна соответствовать символу ®, который является символом Юникода, я думаю ... Вы пробовали очевидное?

var newStr = str.replace(/test(s)?®?/gi, function(m, s1){ 
    var s = s1?s1.toUpperCase():""; 
    return "TEST"+s+"®"; 
}); 

Если проблема заключается в том, что ® не совпадает, попробуйте с его номером юникод символов:

/test(s)?\u00ae/ 

К сожалению, если остальное не работает, я предполагаю, что ваша замена уже работает, и вы просто должны также совпадают с ®, чтобы он не дублировался.

+0

, похоже, не работает. Работает ли это для вас? – ngreenwood6

0

Вместо того, чтобы создавать что-то с нуля, попробуйте использовать альтернативную библиотеку. Я разрабатываю PHP, поэтому использование библиотеки, которая имеет идентичные методы в JavaScript, является спасателем жизни.

PHP.JS Library

var newReplaced = $P.str_replace("find","replace",varSearch);

+0

-1 (вы просто не можете его увидеть ... потому что у меня нет голосов). Самостоятельное продвижение всегда плохое, но ваше страшно. –

+0

Я использую эту библиотеку совместно с jQuery. Нет реальных проблем. –

1

Чтобы расширить ответ JANDY, попробуйте это:

$("div, p, span").each(function(){ 
    o = $(this); 
    o.html(o.text().replace(/test(|s)\u00ae/gi, function($1){ 
    return($1.toUpperCase()); 
    })); 
}); 

Используя код при условии, попробуйте следующее:

$(document).ready(function(){ 
$('body').html($('body').html().replace(/realtor(|s)\u00ae/gi, function($1){ 
    return($1.toUpperCase()); 
})); 
}) 
+0

, который отлично работает, единственная проблема заключается в том, что если в конце нет ® (например, риэлтор), он не добавляет ®. Мне нужно это сделать. Есть идеи? – ngreenwood6

+0

Дал вам плюс один, потому что вы действительно смогли получить решение. – ngreenwood6

+0

Как ваш вопрос написан, кажется, что ® уже существует, поэтому эта функция замены найдет все экземпляры realtor® или realtors® и сделает их прописными, поэтому вам не нужно добавлять еще один «®». В любом случае, рад, что у вас есть ваше решение и спасибо за верхнюю часть. – Mottie

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