Видаліть букву (:) з рядка

У мене такі рядки, як Name :, Call :, Phone: .... і так далі в моєму столі. Я вивчаю jQuery і маю доступ до тексту. У моїй підручці використано trim() , щоб видалити будь-які пробіли. Але я хочу видалити ":" з кінця кожного рядка (і так, він завжди лежить в кінці після виклику методу 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>

порядок (":") не допомогло ...

4
Якщо ви хочете використовувати jQuery, і це завжди : , ви можете просто скопіювати останній символ: jQuery "> stackoverflow.com/questions/4308934/ …
додано Автор wkl, джерело

10 Відповіді

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

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';
10
додано
Цей код передбачає, що останній символ завжди буде двокрапкою, що може не завжди бути правдою. Це не обрізає кінцевих оболонок, він знімає будь-який символ на кінці.
додано Автор Peter Olson, джерело
Дивіться редагований код.
додано Автор Blender, джерело
@ Shautieh: ні, він до цих пір обробляє : , я просто забув додати аргумент. Оновлений код працює.
додано Автор Blender, джерело
замінити замінить тільки перший екземпляр:
додано Автор Jayendra, джерело
Ще неправильно. Ваша функція rtrim не містить аргументів, тому немає сенсу називати його ':'. Що це робить - це видалити просто символи (\ s) в кінці рядка, якщо такі є.
додано Автор Shautieh, джерело
@ Блендер: ви забули аргумент і використали \ s замість цього у всіх випадках, так ні: це не "все ще нажимають:". Оновлений код, насправді, правильний.
додано Автор Shautieh, джерело
Шауйте правильно; дивіться jsfiddle у моїй відповіді.
додано Автор weir, джерело

У цьому випадку просто використовуйте старий JavaScript замінити або < код> метод substr .

Ви також можете використовувати регулярний вираз, який шукає двокрапку як останній символ (символ, що передує кінцевому ряду регулярних виразів анкер " $ ").

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

Привіт

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

Привіт

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

h: i

Це спрощена, вбудована версія функції rtrim у відповідь Blender.

EDIT: Ось тестова скрипка для виправленої функції Blender rtrim . Зверніть увагу, що його RegExp буде видаляти кілька випадків зазначеного символу, якщо рядок закінчується декількома екземплярами послідовно (напр. Напівжирним шрифтом нижче).

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

input = ':: a: sd:' output = ':: a: sd'; input = 'hi:' output = 'hi'; input = 'hi :::' output = 'hi' ; input = 'hi' output = 'hi'; input = 'h: i' output = 'h: i'

5
додано
Так, дивіться тут: w3schools.com/jsref/jsref_substr.asp
додано Автор halfer, джерело
Дякую; вже зв'язаний в редакції перед публікацією.
додано Автор weir, джерело

Для рубиття останнього символу рядка використовуйте string.slice (0, -1)

1
додано

Це перевіряє, чи останній символ - двокрапка. Якщо це так, останній символ видаляється.

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
додано
var a="name:";
var b=a.split(":");
alert(b[0]);
0
додано

You can use a regular expression to remove the colon (:).


Replace one instance:

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

Result: Stuff


Replace all instances:

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

Result: Stuff Things

0
додано

one way is to use lastIndexOf

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

DEMO

0
додано
Це викликає дивну помилку, якщо останній символ не є двокрапкою. lastIndexOf поверне -1 , якщо символ не знайдено, і це може спричинити небажану скорочення рядка.
додано Автор Peter Olson, джерело
 function trim(str) {
       str = str.replace(/^:*/,"");
       return str.replace(/:*$/,"");
 }
0
додано

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

Зауважте, що це видаляє все з останнього : до кінця рядка (наприклад, будь-яке пробіл після : ).

0
додано
var myStr = "something:";
myStr = myStr.slice(0, -1);
0
додано
ІТ КПІ - JavaScript
ІТ КПІ - JavaScript
504 учасників

співтовариство javascript розробників в Telegram