2011-10-27 7 views
3

У меня есть строки типа Name :, Call :, Телефон: .... и т. Д. В моем столе. Я изучаю jQuery и смог получить доступ к тексту. В моем учебнике используется trim(), чтобы удалить любые пробелы. Но я хочу, чтобы o удалял «:» с конца каждой строки (и да, она всегда лежит в конце после вызова метода trim()). Итак, как это достичь.Удалите письмо (:) из строки

Сво мой код:

<script type="text/javascript"> 
    $(function() 
    { 
     $(':input[type=text], textarea').each 
    (
    function() 
    { 
     var newText = 'Please enter your ' + 
    $(this).parent().prev().text().toLowerCase().trim(); 
     $(this).attr('value', newText); 
    }).one('focus', function() 
    { 
     this.value = '', this.className = '' 
    }).addClass('Watermark').css('width', '300px'); 
    }); 
</script> 

облицовку (":") не помогло ...

+0

Если вы хотите использовать JQuery, чтобы сделать это, и это всегда ':', вы можете просто отрезать последний символ: http://stackoverflow.com/questions/4308934/how-to-delete-last-character-from-a-string-using-jquery – birryree

ответ

9

Вы можете заменить все символы ::

var str = '::a:sd:'; 
str = str.replace(/:/g,''); // str = 'asd'; 

Или использовать удобный rtrim() функцию:

String.prototype.rtrim = function(character) { 
    var re = new RegExp(character + '*$', 'g'); 
    return this.replace(re, ''); 
}; 

var str = '::a:sd:'; 
str = str.rtrim(':'); // str = '::a:sd'; 
+0

replace заменит только первый экземпляр: – Jayendra

+0

Этот код предполагает, что последний символ всегда будет двоеточием, что может не всегда быть истинным. Это не обрезает хвостовые двоеточия, он обрезает любой символ в конце. –

+0

См. Отредактированный код. – Blender

5

В этом случае просто использовать обычный старый JavaScript replace или substr методы.

Вы также можете использовать регулярное выражение, которое ищет двоеточие в качестве последнего символа (символ, предшествующий концу строки regexp anchor «$»).

"hi:".replace(/:$/, "") 

привет

"hi".replace(/:$/, "") 

привет

"h:i".replace(/:$/, "") 

ч: я

Это упрощенная встроенная версия функции rtrim в ответе Блендера.

EDIT: вот тестовая скрипка для исправленной функции Blender rtrim. Обратите внимание, что его RegExp удалит несколько вхождений указанного символа, если строка заканчивается несколькими экземплярами его последовательно (пример выделен полужирным).

http://jsfiddle.net/fGrPb/5/

вход = ':: A: с.о.:' Выход = ':: A: сд'; input = 'hi:' output = 'hi'; input = 'hi :::' output = 'hi'; input = 'hi' output = 'hi'; вход = «ч: я» выходных = «ч: я»

+0

Да, см. здесь: http://www.w3schools.com/ jsref/jsref_substr.asp – halfer

+0

Thanks; уже связанный в редактировании непосредственно перед отправкой. – weir

0

Проверяется, если последний символ двоеточие. Если это так, последний символ удаляется.

if (str[str.length - 1] === ":") { 
    str = str.slice(0, -1); 
} 

Если могут быть несколько завершающих колонами, вы можете заменить if с while, как это:

while (str[str.length - 1] === ":") { 
    str = str.slice(0, -1); 
} 

Можно даже сделать общую trim функцию, которая принимает строку и символ и триммеры трейлинга экземпляры этого символа:

var trim = function(str, chr) { 
    while (str[str.length - 1] === ":") { 
    str = str.slice(0, -1); 
    } 
    return str; 
} 
0

один способ заключается в использовании lastIndexOf

var str='Name:, Call:, Phone:'; 
var index=str.lastIndexOf(":"); 
alert(index); 
var s=str.substring(0,index); 
alert(s); 

DEMO

+0

Это вызовет странную ошибку, если последний символ не является двоеточием. 'lastIndexOf' вернет' -1', если символ не найден, и это может вызвать нежелательное усечение строки. –

0

Вы можете использовать регулярное выражение для удаления T он двоеточие (:).


Заменить один экземпляр:

var with_colon = 'Stuff:'; 
var regex = /([^:]*):/; 
var without_colon = regex.exec(with_colon)[1]; 
alert(without_colon); 

Результат: Stuff


Заменить все экземпляры:

var with_colon = 'Stuff: Things:'; 
var without_colon = with_colon.replace(/([^:]*):/g,'$1'); 
alert(without_colon); 

Результат: Stuff Things

0

str = str.substring(0,str.lastIndexOf(":"));

Обратите внимание, что это снимает все от последнего : до конца строки (например, любой пробел после :).

0
function trim(str) { 
     str = str.replace(/^:*/,""); 
     return str.replace(/:*$/,""); 
} 
1

Чтобы измельчить последний символ строки использования string.slice (0, -1)

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