先上个效果图
10. That's Why | |
Jimmy/ˈʤɪmi/ 吉米 | more/mɔː/ adj.更多的adv.更 |
started/ˈstɑːtɪd/[start]v.开始,着手,发动 | were/wɜː/ (be/biː/ was/were been) v.是,存在 |
painting/ˈpeɪntɪŋ/ n.画,绘画(艺术) | different/ˈdɪfrənt/ adj.不同的,各种 |
three/θriː/ num.三 | other/ˈʌðə/ adj.其他的,别的 |
years/jɪəz/[year]n.年,年度 | because/bɪˈkɒz/ conj.因为,由于 |
old/əʊld/ adj.老的,...岁的 | never/ˈnevə/ adv.从不,永不,未曾 |
five/faɪv/ num.五 | paper/ˈpeɪpə/ n.纸,报纸,文件 |
already/ɔːlˈredi/ 已经 | half/hɑːf/ n.一半adv.一半 |
good/gʊd/ adj.好的,善良的 | always/ˈɔːlweɪz/ adv.总是,始终 |
also/ˈɔːlsəʊ/ adv.也 | empty/ˈempti/ adj.空的,空虚的 |
got/gɒt/ (get/get/ got gotten) v.获得,记住,到达 | clever/ˈklevə/ adj.聪明的,灵巧的 |
many/ˈmeni/ adj.许多的n.许多 | everybody/ˈevrɪbɒdi/ 每个人 |
prizes/ˈpraɪzɪz/[prize]n.奖品,奖赏 | Nobody/ˈnəʊbədi/ prep.谁也不 |
painted/ˈpeɪntɪd/[paint]n.涂料,油漆v.刷漆 | else/els/ adj.别的adv.否则 |
beautiful/ˈbjuːtəfʊl/ adj.美丽的,绝妙的 | does/dʌz/[do]v.做,干,足够,制作 |
interesting/ˈɪntrɪstɪŋ/ adj.有趣的 | believed/bɪˈliːvd/[believe]v.相信,认为 |
pictures/ˈpɪkʧəz/[picture]n.图片,画,照片 | pioneer/ˌpaɪəˈnɪər/ n.先驱者v.倡导 |
people/ˈpiːpl/ n.人们,人民,人员 | day/deɪ/ n.一天,白天 |
paid/peɪd/ (pay/peɪ/ paid paid) v.支付n.工资 | somebody/ˈsʌmbədi/ 某人 |
lot/lɒt/ n.许多,地adv.相当 | bought/bɔːt/ (buy/baɪ/ bought bought) v.买,购买 |
money/ˈmʌni/ n.金钱,货币,财富 | Please/pliːz/ v.使高兴,喜欢,请 |
them/ðem/ 他们 | tell/tel/ v.告诉,讲,说出 |
said/sed/ adj.上述的,该 | paint/peɪnt/ n.涂料,油漆v.刷漆 |
boy/bɔɪ/ n.男孩,小伙子 | bottom/ˈbɒtəm/ n.底部,末尾 |
famous/ˈfeɪməs/ adj.著名的 | top/tɒp/ n.顶,盖子v.高于 |
little/ˈlɪtl/ adj.小的,一点,少的 | small/smɔːl/ adj.小的,不重要的 |
older/ˈəʊldə/[old]adj.老的,...岁的 | brushes/ˈbrʌʃɪz/[brush]n.刷子,画笔v.刷 |
then/ðen/ adv.当时,然后,那么 | reach/riːʧ/ v.到达,伸手,够到 |
sell/sel/ v.卖,出售 | high/haɪ/ adj.高的,高度的 |
these/ðiːz/ 这些 |
下面是具体的步骤:
1、打开微信小程序-复制就好
2、选择
看到上面的说明按照这个说明去操作就能得到结果。
简单一点就是复制两次,第一次复制单词带音标的格式,第二次复制文字,点运行;点第一次粘贴启动(获得音标在上面的样子),第2次粘贴启动(获取excle的样子,其实是一个string,只是多了空格和回车,变成了两行的样子)
里边有源码,可以改成你要的样子,比如excle搞成4列,我这里有个简单的解释库。
可以自己建个库,用excel的vlookup去匹配。但是这个生成音标的过程和获取单词的过程用vba写起来还是很累的。
---下面是小程序中的源码,应该没什么依赖
testabc(){//’s还是没有处理,与网站的处理策略不一样,比如it's,网上直接看成一个单词,我这边还是看出单词+标点+单词;let app=thisvar result ='ok'let isnoblank=true;//true表示如果没有翻译出来,就用空白替换,如果是false,就用原文替换let iscutword=true;//true,2个字母或者cutword简单字母的,不标音标,比如a an the,如果是false,就用全部标注let learnword='dad+mom+can+too+may+thank++way+home+with+very+much+mrs+ours+one+all+could+would+any+why+going+out+from+next+that+this+there+after+'let delword='couldn+doesn+karen+shouldn+hadn+wasn+haven+wouldn+don+isn+aren+weren+hasn+cann+sally+';//+结尾let cutword='did+not+and+when+was+her+has+the+are+our+you+where+who+what+which+USA+gdp+there+but+his+she+him+hers+your+yours+for+they'//不想标注音标的cutword=learnword+delword+cutword;let cutarr=cutword.toLowerCase().split("+")//分割一下,要不然hey这样的单词也可能不显示let wordFont='"Arial"'//正文字体,有引号注意let wordFontsize='"24"'//24等于12磅字,除以2,有引号let newwordFont='Arial Unicode MS'//正文字体,没引号let newwordFontsize='hps20'//20等于10磅字,除以2,建议24配20,类似这样小20%,常规来说单词比音标短,而且应标还有分割符号let newwordFonthigh='up 11'//11表示24/2-1,距离是0,这个24是word的尺寸,如果是40,那么要填写19//wordtemplatee=` <?xml 有空格是不行的let wordtemplate=`<?xml version="1.0" encoding="UTF-8" standalone="yes"?><?mso-application progid="Word.Document"?><w:wordDocument xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml"><w:docPr> <w:view w:val="print"/> <w:zoom w:percent="120"/> </w:docPr> <w:body> <w:p> <w:r> </w:r> </w:p> </w:body> <w:sectPr> </w:sectPr> </w:wordDocument>`let wpbegin='<w:p>'let wpend='</w:p>'let bodyend='</w:body>'let outstr=''let word=''let nword=''let mword=''let wordshow=''let arrword=[]let arroutw=[]let isre=falselet bk4=' '//空4个let str=''let copyStr=app.data.copyArr[0]//获取剪贴板数据,第一次复制,获取音标和单词的对应关系let inarr=copyStr.split("\r\n")let isfirst=true// 数据必须是 单词,英标;这样的形式,不能是let iscut=false;for(let m=0;m<inarr.length;m++){str=inarr[m]if(str.trim()==''&&isfirst){}else{isfirst=falseif(app.isaz(str)){if(inarr[m]==inarr[m+1]&&isnoblank) {outstr=outstr+'"'+str+'":"'+''+'",'; } else { inarr[m+1]=app.replaceall(inarr[m+1],'ɛ','e');outstr=outstr+'"'+str+'":"'+inarr[m+1]+'",';}m++;}}}outstr="{ "+outstr.slice(0,-1)+" }"let jnew=JSON.parse(outstr)// 获取音标结束outstr='';let copyword=wordtemplatelet easyword='<w:r><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial" w:cs="Arial" w:hint="fareast"/><w:sz w:val="24"/><w:sz-cs w:val="24"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:t>easyword</w:t></w:r>'easyword=app.replaceall(easyword,'"Arial"',wordFont)easyword=app.replaceall(easyword,'"24"',wordFontsize)let oneword=`<w:r><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial" w:cs="Arial" w:hint="fareast"/><w:sz w:val="24"/><w:sz-cs w:val="24"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:fldChar w:fldCharType="begin"/></w:r><w:r><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial" w:cs="Arial" w:hint="fareast"/><w:sz w:val="24"/><w:sz-cs w:val="24"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:instrText> EQ \\* jc0 \\* "Font:Arial Unicode MS" \\* hps22 \\o \\ad(\\s \\up 11(upword),downword)</w:instrText></w:r><w:r><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial" w:cs="Arial" w:hint="fareast"/><w:sz w:val="24"/><w:sz-cs w:val="24"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:fldChar w:fldCharType="separate"/></w:r><w:r><w:rPr><w:rFonts w:ascii="Arial" w:h-ansi="Arial" w:cs="Arial" w:hint="fareast"/><w:sz w:val="24"/><w:sz-cs w:val="24"/><w:lang w:val="EN-US" w:fareast="ZH-CN"/></w:rPr><w:fldChar w:fldCharType="end"/></w:r>`oneword=app.replaceall(oneword,'"Arial"',wordFont)oneword=app.replaceall(oneword,'"24"',wordFontsize)oneword=app.replaceall(oneword,'"Arial Unicode MS"',newwordFont)oneword=app.replaceall(oneword,'hps22',newwordFontsize)oneword=app.replaceall(oneword,'up 11',newwordFonthigh)let bl=copyword.indexOf(wpbegin)let bodybegin=copyword.slice(0,bl)let el=copyword.indexOf(bodyend)bodyend=copyword.slice(el)// 第二次复制,其实就是要复制出段落分割符号let wrodarr=app.data.copyArr[1].split("\r\n")for(let m=0;m<wrodarr.length;m++){str=wrodarr[m];// console.log(str)if(str.trim()==''){continue}outstr=outstr+wpbegin+easyword.replace('easyword',bk4);//开头加上4个空格for(let i=0;i<str.length;i++){if(app.isaz(str.charAt(i))){word=word+str.charAt(i)}else{if(word.trim()!==''){nword=jnew[word];// 如果找不到或者空格,就简单替换if(word.length<3||cutarr.indexOf(word.toLowerCase())!==-1){iscut=true;}else{iscut=false;mword=word.toLowerCase();if(app.findphs(mword)!==undefined&&app.findphs(mword).w!==undefined&&app.findphs(mword).w!==''&&word.toLowerCase()!==app.findphs(mword).w){wordshow=word+jnew[word]+'['+app.findphs(mword).w+']'+app.findphs(mword).m+''}else{wordshow=word+jnew[word]+' '+app.findphs(mword).m+''} for(let wi=0;wi<arrword.length;wi++){ if(arrword[wi]==word.toLowerCase()){isre=true;break}}if(!isre) {arrword.push(word.toLowerCase()); arroutw.push(wordshow);}}if(nword==undefined||nword==''||(iscut&&iscutword)){nword=easyword.replace('easyword',word)}else{nword=oneword.replace('upword',nword).replace('downword',word)} } outstr=outstr+nword+easyword.replace('easyword',str.charAt(i));word='';nword='';wordshow='';mword=''; isre=false }if(i==str.length-1)//最后一个可能是标点,也可能直接是单词,如果是标点word='',如果是单词,加上单词{if(word.trim()!==''){nword=jnew[word];// 如果找不到或者空格,就简单替换if(word.length<3||cutarr.indexOf(word.toLowerCase())!==-1){iscut=true;}else{iscut=false;mword=word.toLowerCase();if(app.findphs(mword)!==undefined&&app.findphs(mword).w!==undefined&&app.findphs(mword).w!==''&&word.toLowerCase()!==app.findphs(mword).w){wordshow=word+jnew[word]+'['+app.findphs(mword).w+']'+app.findphs(mword).m+''}else{wordshow=word+jnew[word]+' '+app.findphs(mword).m+''} for(let wi=0;wi<arrword.length;wi++){ if(arrword[wi]==word.toLowerCase()){isre=true;break}}if(!isre) {arrword.push(word.toLowerCase()); arroutw.push(wordshow);}}if(nword==undefined||nword==''||(iscut&&iscutword)){nword=easyword.replace('easyword',word)}else{nword=oneword.replace('upword',nword).replace('downword',word)} }outstr=outstr+nword+wpend;//最后一个字符后,段落结束,把结束符号给他word='';nword='';wordshow='';mword=''; isre=false ;// 处理最后一个字符结束}}}let li=Math.round(arroutw.length/2)word='';if(li==(arroutw.length/2)){for(let i=0;i<li;i++){ word=word+arroutw[i]+'\t'+arroutw[i+li]+'\r\n'; }}else{for(let i=0;i<li;i++)if(i!==(li-1)){ word=word+arroutw[i]+'\t'+arroutw[i+li]+'\r\n'; }else{ word=word+arroutw[i]+'\r\n'; }}outstr=bodybegin+outstr+bodyendapp.data.outArr=[]app.data.outArr.push(outstr);app.data.outArr.push(word);app.data.outStr=word;//把数据传递出去剪贴板数据console.log(jnew)app.setData({result:'ok' + new Date().getTime()});wx.setClipboardData({data:app.data.outStr,success: function(res) {},fail: function(res) {}}); return },findphs(str){str=str.toLowerCase();let js={w:'',m:''}if(jsonData.data[str]!==undefined){js.w=str; js.m=jsonData.data[str]; return js}// s es iesif(str.slice(-1)=="s"&&jsonData.data[str.slice(0,-1)]!==undefined){js.w=str.slice(0,-1); js.m=jsonData.data[str.slice(0,-1)];return js}if(str.slice(-2)=="es"&&jsonData.data[str.slice(0,-2)]!==undefined){js.w=str.slice(0,-2); js.m=jsonData.data[str.slice(0,-2)];return js}if(str.slice(-3)=="ies"&&jsonData.data[str.slice(0,-3)+'y']!==undefined){js.w=str.slice(0,-3)+'y'; js.m=jsonData.data[str.slice(0,-3)+'y'];return js}
// d ed xxedif(str.slice(-1)=="d"&&jsonData.data[str.slice(0,-1)]!==undefined){js.w=str.slice(0,-1); js.m=jsonData.data[str.slice(0,-1)];return js}if(str.slice(-2)=="ed"&&jsonData.data[str.slice(0,-2)]!==undefined){js.w=str.slice(0,-2); js.m=jsonData.data[str.slice(0,-2)];return js}if(str.slice(-2)=="ed"&&jsonData.data[str.slice(0,-3)]!==undefined){js.w=str.slice(0,-3); js.m=jsonData.data[str.slice(0,-3)];return js} //stoppedif(str.slice(-3)=="ied"&&jsonData.data[str.slice(0,-3)+'y']!==undefined){js.w=str.slice(0,-3)+'y'; js.m=jsonData.data[str.slice(0,-3)+'y'];return js}// ingif(str.slice(-3)=="ing"&&jsonData.data[str.slice(0,-3)]!==undefined){js.w=str.slice(0,-3); js.m=jsonData.data[str.slice(0,-3)];return js}if(str.slice(-3)=="ing"&&jsonData.data[str.slice(0,-3)+'e']!==undefined){js.w=str.slice(0,-3)+'e'; js.m=jsonData.data[str.slice(0,-3)+'e'];return js}//move,movingif(str.slice(-3)=="ing"&&jsonData.data[str.slice(0,-4)]!==undefined){js.w=str.slice(0,-4); js.m=jsonData.data[str.slice(0,-4)];return js}//swimming// +er +estif(str.slice(-2)=="er"&&jsonData.data[str.slice(0,-2)]!==undefined){js.w=str.slice(0,-2); js.m=jsonData.data[str.slice(0,-2)];return js}if(str.slice(-3)=="ier"&&jsonData.data[str.slice(0,-3)+'y']!==undefined){js.w=str.slice(0,-3)+'y'; js.m=jsonData.data[str.slice(0,-3)+'y'];return js}//easierif(str.slice(-2)=="er"&&jsonData.data[str.slice(0,-3)]!==undefined){js.w=str.slice(0,-3); js.m=jsonData.data[str.slice(0,-3)];return js}//biggerif(str.slice(-2)=="er"&&jsonData.data[str.slice(0,-1)]!==undefined){js.w=str.slice(0,-1); js.m=jsonData.data[str.slice(0,-1)];return js}// nicerif(str.slice(-3)=="est"&&jsonData.data[str.slice(0,-3)]!==undefined){js.w=str.slice(0,-3); js.m=jsonData.data[str.slice(0,-3)];return js}//tallestif(str.slice(-4)=="iest"&&jsonData.data[str.slice(0,-4)+'y']!==undefined){js.w=str.slice(0,-4)+'y'; js.m=jsonData.data[str.slice(0,-4)+'y'];return js}//easiestif(str.slice(-3)=="est"&&jsonData.data[str.slice(0,-4)]!==undefined){js.w=str.slice(0,-4); js.m=jsonData.data[str.slice(0,-4)];return js}//biggestif(str.slice(-3)=="est"&&jsonData.data[str.slice(0,-2)]!==undefined){js.w=str.slice(0,-2); js.m=jsonData.data[str.slice(0,-2)];return js}//nicest//形容词变副词if(str.slice(-2)=="ly"&&jsonData.data[str.slice(0,-2)]!==undefined){js.w=str.slice(0,-2); js.m=jsonData.data[str.slice(0,-2)];return js}// slowlyif(str.slice(-2)=="ly"&&jsonData.data[str.slice(0,-2)+'e']!==undefined){js.w=str.slice(0,-2)+'e'; js.m=jsonData.data[str.slice(0,-2)+'e'];return js}// true trulyif(str.slice(-2)=="ly"&&jsonData.data[str.slice(0,-2)+'le']!==undefined){js.w=str.slice(0,-2)+'le'; js.m=jsonData.data[str.slice(0,-2)+'le'];return js}// true truly// able ablyif(str.slice(-3)=="ily"&&jsonData.data[str.slice(0,-3)+'y']!==undefined){js.w=str.slice(0,-3)+'y'; js.m=jsonData.data[str.slice(0,-3)+'y'];return js}//happy happilyif(str.slice(-3)=="lly"&&jsonData.data[str.slice(0,-1)]!==undefined){js.w=str.slice(0,-1); js.m=jsonData.data[str.slice(0,-1)];return js}//smallyif(str.slice(-4)=="ally"&&jsonData.data[str.slice(0,-4)]!==undefined){js.w=str.slice(0,-4); js.m=jsonData.data[str.slice(0,-4)];return js}//basic basically// f fe ves
if(str.slice(-3)=="ves"&&jsonData.data[str.slice(0,-3)+'f']!==undefined)
{js.w=str.slice(0,-3)+'f'; js.m=jsonData.data[str.slice(0,-3)+'f'];return js}/// leaf leaves
if(str.slice(-3)=="ves"&&jsonData.data[str.slice(0,-3)+'fe']!==undefined)
{js.w=str.slice(0,-3)+'fe'; js.m=jsonData.data[str.slice(0,-3)+'fe'];return js}/// life lives
return js/*if(jsonData.data[str]!==undefined){return jsonData.data[str]}if(str.slice(-1)=="s"&&jsonData.data[str.slice(0,-1)]!==undefined){return jsonData.data[str.slice(0,-1)]}if(str.slice(-2)=="es"&&jsonData.data[str.slice(0,-2)]!==undefined){return jsonData.data[str.slice(0,-2)]}if(str.slice(-3)=="ies"&&jsonData.data[str.slice(0,-3)+'y']!==undefined){return jsonData.data[str.slice(0,-3)+'y']}if(str.slice(-1)=="d"&&jsonData.data[str.slice(0,-1)]!==undefined){return jsonData.data[str.slice(0,-1)]}if(str.slice(-2)=="ed"&&jsonData.data[str.slice(0,-2)]!==undefined){return jsonData.data[str.slice(0,-2)]}if(str.slice(-2)=="ed"&&jsonData.data[str.slice(0,-3)]!==undefined){return jsonData.data[str.slice(0,-3)]}//stoppedif(str.slice(-3)=="ied"&&jsonData.data[str.slice(0,-3)+'y']!==undefined){return jsonData.data[str.slice(0,-3)+'y']}if(str.slice(-3)=="ing"&&jsonData.data[str.slice(0,-3)]!==undefined){return jsonData.data[str.slice(0,-3)]}if(str.slice(-3)=="ing"&&jsonData.data[str.slice(0,-3)+'e']!==undefined){return jsonData.data[str.slice(0,-3)+'e']}//move,movingif(str.slice(-3)=="ing"&&jsonData.data[str.slice(0,-4)]!==undefined){return jsonData.data[str.slice(0,-4)]}//swimming// +er +estif(str.slice(-2)=="er"&&jsonData.data[str.slice(0,-2)]!==undefined){return jsonData.data[str.slice(0,-2)]}// tallerif(str.slice(-3)=="ier"&&jsonData.data[str.slice(0,-3)+'y']!==undefined){return jsonData.data[str.slice(0,-3)+'y']}//easierif(str.slice(-2)=="er"&&jsonData.data[str.slice(0,-3)]!==undefined){return jsonData.data[str.slice(0,-3)]}//biggerif(str.slice(-2)=="er"&&jsonData.data[str.slice(0,-1)]!==undefined){return jsonData.data[str.slice(0,-1)]}// nicerif(str.slice(-3)=="est"&&jsonData.data[str.slice(0,-3)]!==undefined){return jsonData.data[str.slice(0,-3)]}//tallestif(str.slice(-4)=="iest"&&jsonData.data[str.slice(0,-4)+'y']!==undefined){return jsonData.data[str.slice(0,-4)+'y']}//easiestif(str.slice(-3)=="est"&&jsonData.data[str.slice(0,-4)]!==undefined){return jsonData.data[str.slice(0,-4)]}//biggestif(str.slice(-3)=="est"&&jsonData.data[str.slice(0,-2)]!==undefined){return jsonData.data[str.slice(0,-2)]}//nicest//形容词变副词if(str.slice(-2)=="ly"&&jsonData.data[str.slice(0,-2)]!==undefined){return jsonData.data[str.slice(0,-2)]}// slowlyif(str.slice(-2)=="ly"&&jsonData.data[str.slice(0,-2)+'e']!==undefined){return jsonData.data[str.slice(0,-2)+'e']}// true trulyif(str.slice(-2)=="ly"&&jsonData.data[str.slice(0,-2)+'le']!==undefined){return jsonData.data[str.slice(0,-2)+'le']}// able ablyif(str.slice(-3)=="ily"&&jsonData.data[str.slice(0,-3)+'y']!==undefined){return jsonData.data[str.slice(0,-3)+'y']}//happy happilyif(str.slice(-3)=="lly"&&jsonData.data[str.slice(0,-1)]!==undefined){return jsonData.data[str.slice(0,-1)]}//smallyif(str.slice(-4)=="ally"&&jsonData.data[str.slice(0,-4)]!==undefined){return jsonData.data[str.slice(0,-4)]}//basic basically
// f fe ves
if(str.slice(-3)=="ves"&&jsonData.data[str.slice(0,-3)+'f']!==undefined)
{return jsonData.data[str.slice(0,-3)+'f']}// leaf leaves
if(str.slice(-3)=="ves"&&jsonData.data[str.slice(0,-3)+'fe']!==undefined)
{return jsonData.data[str.slice(0,-3)+'fe']}// life lives
*/},leftNum(str) {return str.replace(/[^0-9]/ig,"")},leftLetter(str) {return str.replace(/[^a-zA-Z]/ig,"")},
//判断字符函数 isaz(val){ var regPos = /[a-zA-Z]/; if(regPos.test(val)){ return true; }else{ return false; } },//字符替换函数
replaceall(str, substr, newstr) {var p = -1;var s = 0; while((p = str.indexOf(substr, s)) > -1) {s = p + newstr.length;str = str.replace(substr, newstr);}return str;
},