2016-04-14 22 views
0

Im auf einem Übersetzungsprojekt arbeiten, wenn Benutzertypen muss ich einige Worte ändern, wie "Yalama" -> "Yalama", "yalamak" -> "yalamak", " kalamadi "->" kaLamadi ", "salamadi" -> "saLamadi", funktioniert mein Code auch für jetzt, aber ich habe ein Problem: wenn ich nur Typ "Lam", es ändert sich nicht zu " Lm " wie es sein sollte ... und ich weiß nicht, wie man seine Regex schreibt oder löst :(Regex ein Wort benutzerdefinierte ändern

$(document).ready(function(){ 
 

 
    $("#ta_1").keyup(function(event) { 
 
     var text2 = $(this).val(); 
 
     text2 = text2.replace(/al/g, "L"); 
 
     text2 = text2.replace(/([^L]|^)am/g, '$1m'); 
 
     $("#ta_1").val(text2); 
 
    }); 
 
});
<!DOCTYPE html> 
 
<html lang="en"> 
 
    <head> 
 
     <title></title> 
 
     <meta charset="utf-8" /> 
 
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
    </head> 
 
    <body> 
 
     <textarea id="ta_1" rows="5" cols="28" ></textarea> 
 
    </body> 
 
</html>

+0

*** Lam „Wenn ich nur Typ‚Lm‘, ist es nicht zu ändert‚‘, wie es sein sollte“ *** Ich sehe nicht, dass auf deinem Code. –

+0

@PedroLobito Ich habe ein Code-Snippet geschrieben, versuche, "Lam" zu tippen, ich möchte es in "Lm" ändern – pinug

+0

@PedroLobito Sie können löschen "wie es sein sollte" Teil vielleicht machte ich einen englischen Fehler ^^ – pinug

Antwort

0

Das RegexMuster für eine Zeichenfolge sucht, die NICHT enthalten ein oberes Gehäuse L tut. So lam' evaluates to true. Remove the brackets [] und fügen und i für Groß- und Kleinschreibung

$(document).ready(function(){ 
 

 
$("#ta_1").keyup(function(event) { 
 

 
var text2 = $(this).val(); 
 

 
    text2 = text2.replace(/al/g, "L"); 
 

 
    text2 = text2.replace(/(^L|^)am/ig, '$1m'); 
 

 

 
$("#ta_1").val(text2); 
 
    
 
    
 
}); 
 
    
 
});
<!DOCTYPE html> 
 
<html lang="en"> 
 
<head> 
 
<title></title> 
 
<meta charset="utf-8" /> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
</head> 
 
    
 
<body> 
 
    
 
<textarea id="ta_1" rows="5" cols="28" ></textarea> 
 
    
 
</body> 
 
    
 
</html>

+0

@MB kannst du mir bitte ein Exemplar oder ein Beispiel posten? – pinug

+0

Ich habe gerade deinen Code geändert, um die Zeilen 3-5 mit diesem Code zu ersetzen –

+0

@ MB ich ersetzt, aber es hat nicht funktioniert :( – pinug

1

(die den Brief negiert) schrieb ich das Muster für Zeichenfolge ersetzen. Bitte versuchen Sie dies:

$(document).ready(function() { 
 

 
    $("#ta_1").keyup(function(event) { 
 

 
    var text2 = $(this).val(); 
 

 
    text2 = text2.replace(/(ya)l(amak?)/g, "$1L$2"); 
 
    text2 = text2.replace(/(ka|sa)l(amadi)/g, "$1L$2"); 
 
    text2 = text2.replace(/\bLam\b/g, "Lm"); 
 

 
    $("#ta_1").val(text2); 
 

 

 
    }); 
 

 
});
<!DOCTYPE html> 
 
<html lang="en"> 
 

 
<head> 
 
    <title></title> 
 
    <meta charset="utf-8" /> 
 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
</head> 
 

 
<body> 
 

 
    <textarea id="ta_1" rows="5" cols="28"></textarea> 
 

 
</body> 
 

 
</html>

+0

Vielen Dank es ist genug für mich Ich werde versuchen, es nach zu entwickeln, weil ich den Code für alle Fälle zu verallgemeinern ,, wie: xxxxlaxxx-> xxxxLaxxx – pinug

+0

Das könnte gemacht werden durch: 'text2 = text2.replace (/ la/g," La ")'. – Quinn

Verwandte Themen