[英]Replace letters with Words using JavaScript Regex
我正在做一些需要語音表達的東西。 目標是采用隨機字符串 - 包含數字,字母和符號 - 並用字替換字母。 我遇到了一個問題。
它不想將第一個和最后一個字母更改為單詞。 這是因為表達式/\\sa\\s/g
(例如)搜索在字母的正面和背面有空格的小寫字母a
的所有實例。
假設你有一個隨機字符串h_OX%o2At
下面的代碼返回h _ OSCAR XRAY % oscar 2 ALPHA t
,但我希望它返回hotel _ OSCAR XRAY % oscar 2 ALPHA tango
。
這是代碼:
phoneticExp.text(password.split("").join(" ").replace(/\sa\s/g, " alpha ").replace(/\sA\s/g, " ALPHA ").replace(/\sb\s/g, " bravo ").replace(/\sB\s/g, " BRAVO ").replace(/\sc\s/g, " charlie ").replace(/\sC\s/g, " CHARLIE ").replace(/\sd\s/g, " delta ").replace(/\sD\s/g, " DELTA ").replace(/\se\s/g, " echo ").replace(/\sE\s/g, " ECHO ").replace(/\sf\s/g, " foxtrot ").replace(/\sF\s/g, " FOXTROT ").replace(/\sg\s/g, " golf ").replace(/\sG\s/g, " GOLF ").replace(/\sh\s/g, " hotel ").replace(/\sH\s/g, " HOTEL ").replace(/\si\s/g, " india ").replace(/\sI\s/g, " INDIA ").replace(/\sj\s/g, " juliet ").replace(/\sJ\s/g, " JULIET ").replace(/\sk\s/g, " kilo ").replace(/\sK\s/g, " KILO ").replace(/\sl\s/g, " lima ").replace(/\sL\s/g, " LIMA ").replace(/\sm\s/g, " mike ").replace(/\sM\s/g, " MIKE ").replace(/\sn\s/g, " november ").replace(/\sN\s/g, " NOVEMBER ").replace(/\so\s/g, " oscar ").replace(/\sO\s/g, " OSCAR ").replace(/\sp\s/g, " papa ").replace(/\sP\s/g, " PAPA ").replace(/\sq\s/g, " quebec ").replace(/\sQ\s/g, " QUEBEC ").replace(/\sr\s/g, " romeo ").replace(/\sR\s/g, " ROMEO ").replace(/\ss\s/g, " sierra ").replace(/\sS\s/g, " SIERRA ").replace(/\st\s/g, " tango ").replace(/\sT\s/g, " TANGO ").replace(/\su\s/g, " uniform ").replace(/\sU\s/g, " UNIFORM ").replace(/\sv\s/g, " victor ").replace(/\sV\s/g, " VICTOR ").replace(/\sw\s/g, " wiskey ").replace(/\sW\s/g, " WISKEY ").replace(/\sx\s/g, " xray ").replace(/\sX\s/g, " XRAY ").replace(/\sy\s/g, " yankee ").replace(/\sz\s/g, " zulu ").replace(/\sZ\s/g, " ZULU "));
然后我嘗試做/(\\s|\\s?)a(\\s|\\s?)/g
應該搜索小寫字母a
,它在前面和后面都有一個空格或一個可選空格。 那沒用。
我不知所措。 這是小提琴
您還需要在字符串的開頭和結尾搜索錨點。 對於每個角色,您需要執行以下操作: /(\\s|^)a(\\a|$)/g
。 我可能也會創建一個開始/結束字符的哈希並循環,所以你不需要在五十個地方進行這些更改!
我在這里對h和t進行了相關更改,例如: http : //jsfiddle.net/HGrV8/
為什么不避免正則表達式而是做這樣的事情。
使用Javascript
var lookup = {
a: 'alpha',
b: 'bravo',
c: 'charlie',
d: 'delta',
e: 'echo',
f: 'foxtrot',
g: 'golf',
h: 'hotel',
i: 'india',
j: 'juliet',
k: 'kilo',
l: 'lima',
m: 'mike',
n: 'november',
o: 'oscar',
p: 'papa',
q: 'quebec',
r: 'romeo',
s: 'siera',
t: 'tango',
u: 'uniform',
v: 'victor',
w: 'wiskey',
x: 'xray',
y: 'yankee',
z: 'zulu',
};
function toPhonetic(text) {
return text.split('').map(function (character) {
var lower = character.toLowerCase(),
word;
if (lookup.hasOwnProperty(lower)) {
word = lookup[lower];
if (character === lower) {
return word;
}
return word.toUpperCase();
}
return character;
}).join(' ');
}
var password = $("#password").text(),
phoneticExp = $("#phonetic");
phoneticExp.text(toPhonetic(password));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.