2010-01-11 5 views
-1

CSS:Comment supprimer la dernière virgule de ma chaîne et la remplacer par une période en Javascript?

.dynamicDiv { 
    width:200px; 
    border:solid 1px #c0c0c0; 
    background-color:#e1e1e1; 
    font-size:11px; 
    font-family:verdana; 
    color:#000; 
    padding:5px; 
    } 

Javascript:

//create array 
    var myNames=new Array(); 
    //var nameString=document.getElementById(myNames.toString()) 

    function addToDiv() 
    { 
     //1) add name to div 
     document.getElementById('divName').innerHTML = document.getElementById('divName').innerHTML + document.getElementById('enter_name').value + "<br>"; 
     //2) now add the value to an array 
     myNames.push(document.getElementById('enter_name').value); 
     //strHTML = document.getElementById('divName').innerHTML + document.getElementById('enter_name').value + "<br>"; 
     //document.getElementById('divName').innerHTML = strHTML; 
    } 

    function displayMessage() 
    { 
     //debugger; 
     var strMessage = "Welcome to this page "; 

     //loop throught the array and add the element values to strMessage 
     for(i=0;i<=myNames.length-1;i++) 
     { 
      strMessage = strMessage + myNames[i] + ", " 
     } 

     //remove trainling comma 
     //strMessage = strMessage 

     alert(strMessage); 
    } 

    function displayMessagebye() 
    { 
     //debugger; 
     var strMessage = "Thank you for coming to this page "; 

     //loop throught the array and add the element values to strMessage 
     for(i=0;i<=myNames.length-1;i++) 
     { 
      strMessage = strMessage + myNames[i] + ", " 
     } 

     //remove trainling comma 
     //strMessage = strMes 
     //strMessage = strMessage.substr(
     alert(strMessage); 
    } 

HTML:

<div class="dynamicDiv"> 
    <input type="text" name="enter_name" id="enter_name" /> 
    <input name="button" id="button" value="Submit" type="button" onclick="addToDiv();"/> 
</div> 

<div id="divName" class="dynamicDiv" style="margin:10px 0px;"> 
<h2>Names List</h2><p>Names of person you've already added.</p> 
</div> 
<div class="dynamicDiv"><input type="button" onclick="displayMessagebye();" value="Loop" /></div> 
<div id="loop" > </div> 
<div class="dynamicDiv"><input type="button" onclick="displayMessage();" value="String" /></div> 
<div id="string" > </div> 
+2

Il n'est pas du tout clair ce que vous demandez. Réessayer? – danben

+0

Coller du code apparemment arbitraire ne donne pas de détails à votre question. Vouliez-vous dire "comma" au lieu de "commun"? J'allais ajouter un commentaire sur englishoverflow.com, mais ce serait méchant. – JoshNaro

Répondre

4

Vous pouvez remplacer le dernier " "avec"." par:

strMessage.replace(/, $/, ".") 
+0

Super merci! –

2

Pourquoi ne pas tout simplement pas mis là en premier lieu?

-à-dire, dans ce bloc:

for(i=0;i<=myNames.length-1;i++) 
{ 
    strMessage = strMessage + myNames[i] + ", " 
} 

juste vérifier si nous sommes à la fin de la liste et mettre une période il INB place de la virgule:

for(i=0;i<=myNames.length-1;i++) 
{ 
    strMessage = strMessage + myNames[i] 
    if(i < myNames.length) 
     strMessage += ","; 
    else 
     strMessage = "."; 
} 
0

En supposant que vous vouliez dire virgule, pas commun, sera String.replace(",[^,]+$",".") travail?

Notez que vous pouvez trouver ce même type de fonctionnalité dans la plupart des langues, si vous lisez une bonne documentation.

10

Vous pouvez utiliser join pour rejoindre les éléments du tableau:

strMessage = myNames.join(", ") 

Ou encore mieux:

if (myNames.length <= 1) { 
    strMessage = myNames.join(); 
} else { 
    strMessage = myNames.slice(0, -1).join(", ") + " and " + myNames[myNames.length-1]; 
} 
+0

+1, * malgré * l'absence de la virgule d'Oxford. – nickf

+0

@nickf: Et quelle est la bonne utilisation de cette virgule Oxford? Seulement avant le et d'une liste d'au moins trois articles? Ou écrivez-vous * foo et bar *? – Gumbo

+0

Cela aide aussi bien. –

Questions connexes