$(function () { $(':input[type=text], textarea').each ( function () { var newText ="> $(function () { $(':input[type=text], textarea').each ( function () { var newText ="> $(function () { $(':input[type=text], textarea').each ( function () { var newText =" />

Verwijder een letter (:) uit een string

Ik heb strings zoals Name :, Call :, Phone: .... enzovoort in mijn tabel. Ik leer jQuery en kreeg toegang tot de tekst. Mijn zelfstudie heeft trim() gebruikt om eventuele spaties te verwijderen. Maar ik wil o verwijderen ":" aan het einde van elke string (en ja, het ligt altijd aan het einde na het aanroepen van de trim() methode). Dus hoe het te bereiken.

Het is mijn code:

<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>

trim (":") heeft niet geholpen ...

4
Als u jQuery wilt gebruiken om het te doen en het is altijd : , kunt u het laatste teken gewoon afsnijden: jQuery "> stackoverflow.com/questions/4308934/…
toegevoegd de auteur wkl, de bron

10 antwoord

U kunt alle : tekens vervangen:

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

Of gebruik een handige rtrim() functie:

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
toegevoegd
Deze code gaat ervan uit dat dat laatste teken altijd een dubbele punt is, wat misschien niet altijd waar is. Dit snijdt geen dubbele punten af, het trimt elk teken aan het uiteinde af.
toegevoegd de auteur Peter Olson, de bron
Zie de bewerkte code.
toegevoegd de auteur Blender, de bron
@Shautieh: nee, het snijdt nog steeds : , ik vergat gewoon een argument toe te voegen. De bijgewerkte code werkt.
toegevoegd de auteur Blender, de bron
replace zou alleen het eerste exemplaar van:
toegevoegd de auteur Jayendra, de bron
Nog steeds fout. Uw rtrim-functie neemt geen enkel argument, dus het is niet logisch om het met ':' te noemen. Wat het doet is alleen spaties (\ s) verwijderen aan het einde van de reeks, indien aanwezig.
toegevoegd de auteur Shautieh, de bron
@Blender: je bent het argument vergeten EN hebt in alle gevallen \ s gebruikt, dus nee: het heeft niet "nog steeds strim:". De bijgewerkte code is inderdaad correct.
toegevoegd de auteur Shautieh, de bron
Shautieh is correct; zie de jsfiddle in mijn antwoord.
toegevoegd de auteur weir, de bron

Gebruik in dit geval de eenvoudige oude JavaScript vervangen of < code> substraten .

U kunt ook een reguliere expressie gebruiken die naar colon kijkt als het laatste teken (het teken vóór de regexp-einde-reeks anchor " $ ").

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

hi

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

hi

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

h: i

Dit is een vereenvoudigde, inline-versie van de functie rtrim in het antwoord van Blender.

EDIT: Hier is een testfiool voor de gecorrigeerde functie rtrim van Blender. Houd er rekening mee dat zijn RegExp meerdere exemplaren van het opgegeven teken verwijdert als de reeks eindigt met meerdere exemplaren van de reeks (bijvoorbeeld vetgedrukt hieronder).

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
toegevoegd
toegevoegd de auteur halfer, de bron
Bedankt; al gekoppeld in een bewerking net voordat je gepost hebt.
toegevoegd de auteur weir, de bron

Gebruik string.slice (0, -1) om het laatste teken van een tekenreeks te hakken

1
toegevoegd

Hiermee wordt gecontroleerd of het laatste teken een dubbele punt is. Als dit het geval is, wordt het laatste teken verwijderd.

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

Als er meerdere trailing dubbele punten zijn, kunt u if vervangen door while , zoals dit:

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

Je zou zelfs een generieke trim -functie kunnen maken die een tekenreeks en een teken accepteert en achterliggende exemplaren van dat teken bijsnijdt:

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

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
toegevoegd

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
toegevoegd
Dit zal een rare bug veroorzaken als het laatste karakter geen dubbele punt is. lastIndexOf retourneert -1 als het karakter niet wordt gevonden en dit zou ongewenste afknotting van de tekenreeks kunnen veroorzaken.
toegevoegd de auteur Peter Olson, de bron
 function trim(str) {
       str = str.replace(/^:*/,"");
       return str.replace(/:*$/,"");
 }
0
toegevoegd

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

Houd er rekening mee dat hiermee alles van de laatste : wordt verwijderd tot aan het einde van de tekenreeks (bijvoorbeeld elke witruimte na de : ).

0
toegevoegd
var myStr = "something:";
myStr = myStr.slice(0, -1);
0
toegevoegd