⑴ javascript漢字獲取拼音首字元問題
那個是VBscript的函數,js裡面沒有獲取GB2312編碼的函數,需要自己整一個。
GB2312裡面的7k多個漢字是按照拼音排序的,後來擴充的漢字並沒有按照拼音排序,(為了不打亂已經排好的GB2312編碼表),所以要准確獲取拼音最好還是用詞庫來比對。
這里有比較好的例子:
http://www.cssrain.cn/demo/pinyin/lukin/Pinyin.html
自己改寫一下就可以。
如果要搞好那個函數,需要把編碼轉換為ansi編碼,網上有很多這里函數。
復雜的漢字確實不能找到正確的拼音,只適用簡單的漢字GB2312里的。
改寫如下:
先去http://www.cftea.com/c/2009/04/3T7WXDO9S9VFBXH3.asp 里弄兩個函數來:字數超過限制就不貼這兩個函數了。自己去下載一下:
function UnicodeChr();
function AnsicodeChr();
var s='拼音轉換';
alert( getPY_str(s) );
function getPY_str(str){
var py_str='';
for ( var i=0; i < str.length ; i++)
{
py_str +=getPY(str.substr(i,1));
}
return py_str;
}
function ansi(c){
return UnicodeToAnsi(c.charCodeAt(0));
}
function UnicodeToAnsi(chrCode)
{
var chrHex=chrCode.toString(16);
chrHex="000"+chrHex.toUpperCase();
chrHex=chrHex.substr(chrHex.length-4);
var i=UnicodeChr().indexOf(chrHex);
if(i!=-1)
{
chrHex=AnsicodeChr().substr(i,4);
}
return parseInt(chrHex,16);
}
function getPY(ch)
{
if(ch !='') {
var code = ansi(ch);
var py = '';
if(code>=45217 && code<=45252) {
py = "A"
} else if(code>=45253 && code<=45760) {
py = "B"
} else if(code>=45761 && code<=46317) {
py = "C"
} else if(code>=46318 && code<=46825) {
py = "D"
} else if(code>=46826 && code<=47009) {
py = "E"
} else if(code>=47010 && code<=47296) {
py = "F"
} else if((code>=47297 && code<=47613) || (code == 63193)) {
py = "G"
} else if(code>=47614 && code<=48118) {
py = "H"
} else if(code>=48119 && code<=49061) {
py = "J"
} else if(code>=49062 && code<=49323) {
py = "K"
} else if(code>=49324 && code<=49895) {
py = "L"
} else if(code>=49896 && code<=50370) {
py = "M"
} else if(code>=50371 && code<=50613) {
py = "N"
} else if(code>=50614 && code<=50621) {
py = "O"
} else if(code>=50622 && code<=50905) {
py = "P"
} else if(code>=50906 && code<=51386) {
py = "Q"
} else if(code>=51387 && code<=51445) {
py = "R"
} else if(code>=51446 && code<=52217) {
py = "S"
} else if(code>=52218 && code<=52697) {
py = "T"
} else if(code>=52698 && code<=52979) {
py = "W"
} else if(code>=52980 && code<=53688) {
py = "X"
} else if(code>=53689 && code<=54480) {
py = "Y"
} else if(code>=54481 && code<=62289) {
py = "Z"
} else {
py =ch;
}
return py;
}else{
return '';
}
}
⑵ javascript中文按照拼音首字母排序,如何實現
中文拼音排序一直都是很有趣的一個問題。推薦使用這個函數 String.prototype.localeCompare(),鏈接 MDN。首先用 localeCompare 試下拼音排序
var array = ['武漢', '北京', '上海', '天津'];
array.sort(
function compareFunction(param1, param2) {
return param1.localeCompare(param2);
}
);
array // ["北京", "上海", "天津", "武漢"]
然後根據 26 個英文字母分組排序,函數如下,
function pySegSort(arr) {
if(!String.prototype.localeCompare)
return null;
var letters = "*abcdefghjklmnopqrstwxyz".split('');
var zh = "阿八嚓噠妸發旮哈譏咔垃痳拏噢妑七呥扨它穵夕丫帀".split('');
var segs = [];
var curr;
letters.forEach(function(item,i){
curr = {letter: item, data:[]};
arr.forEach(function(item2){
if((!zh[i-1] || zh[i-1].localeCompare(item2) <= 0) && item2.localeCompare(zh[i]) == -1) {
curr.data.push(item2);
}
});
if(curr.data.length) {
segs.push(curr);
curr.data.sort(function(a,b){
return a.localeCompare(b);
});
}
});
return segs;
}
測試:
pySegSort(["我","不","懂","愛","啊","按","已","呀","選","縣"])
結果:
[{"letter":"a","data":["啊","愛","按"]},{"letter":"b","data":["不"]},{"letter":"d","data":["懂"]},{"letter":"w","data":["我"]},{"letter":"x","data":["縣","選"]},{"letter":"y","data":["呀","已"]}]
⑶ js中如何實現在姓名拼音的首字母前加空字元
判斷字元串里除首字母外,每個大寫字母的位置,這樣找到位置後,再前面加上空格,組合成新字元串即可,思路就是這樣。
判斷大小寫字母的方法,網路就行。
⑷ 在js中如何實現自動獲取漢字的五筆首字母
在js中如何實現自復動獲取漢字的制五筆首字母?
你的意思是不是,在頁面如果打「z」,轉換成漢字對應的一些字,然後再根據這些字,來查資料庫,取的相關的數據?
這樣麻煩。
一般都是在存數據的時候,就已經轉換好了對應的拼音。
比如要存:張**
,在存入資料庫的時生成一個對應的拼音:zhang**
,把這個也一起存了,漢字存漢字欄位,拼音存拼音欄位。
查找時輸入z,就直接在拼音欄位里查需要的數據。
如果表允許再增加欄位,還是加個拼音的欄位,查找時候方便,快捷。
網上找個漢字轉換拼音的類,把數據處理一下,存進拼音欄位里。
這個是漢字轉拼音參考:
⑸ 用Javascript如何實現在輸入框中輸入漢字拼音的首字母動態過濾相應的漢字
把漢字先轉成拼音(網路一下就有代碼)
再用ajax來更新
⑹ js怎麼用正則表達式驗證首字母大寫
//a變數你就自己獲取,我這兒為你方便你理解我就直接寫上了
vara='Ajjfioewjfoieji';
if(!內(/^[A-Z][A-z0-9]*$/).test(a)){
alert('請首字母容大寫');
}
⑺ js中如何根據漢字生成拼音首字母
//參數,中文字元串
//返回值:拼音首字母串數組
functionmakePy(str){
if(typeof(str)!="string")
thrownewError(-1,"函數makePy需要字元串類型參數!");
vararrResult=newArray();//保存中間結果的數組
for(vari=0,len=str.length;i<len;i++){
//獲得unicode碼
varch=str.charAt(i);
//檢查該unicode碼是否在處理范圍之內,在則返回該碼對映漢字的拼音首字母,不在則調用其它函數處理
arrResult.push(checkCh(ch));
}
//處理arrResult,返回所有可能的拼音首字母串數組
returnmkRslt(arrResult);
}
functioncheckCh(ch){
varuni=ch.charCodeAt(0);
//如果不在漢字處理范圍之內,返回原字元,也可以調用自己的處理函數
if(uni>40869||uni<19968)
returnch;//dealWithOthers(ch);
//檢查是否是多音字,是按多音字處理,不是就直接在strChineseFirstPY字元串中找對應的首字母
return(oMultiDiff[uni]?oMultiDiff[uni]:(strChineseFirstPY.charAt(uni-19968)));
}
functionmkRslt(arr){
vararrRslt=[""];
for(vari=0,len=arr.length;i<len;i++){
varstr=arr[i];
varstrlen=str.length;
if(strlen==1){
for(vark=0;k<arrRslt.length;k++){
arrRslt[k]+=str;
}
}else{
vartmpArr=arrRslt.slice(0);
arrRslt=[];
for(k=0;k<strlen;k++){
//復制一個相同的arrRslt
vartmp=tmpArr.slice(0);
//把當前字元str[k]添加到每個元素末尾
for(varj=0;j<tmp.length;j++){
tmp[j]+=str.charAt(k);
}
//把復制並修改後的數組連接到arrRslt上
arrRslt=arrRslt.concat(tmp);
}
}
}
returnarrRslt;
}
//兩端去空格函數
String.prototype.trim=function(){returnthis.replace(/(^s*)|(s*$)/g,"");}
//查看拼音首字母縮寫
functionquery(){
varstr=document.getElementById("txtChinese").value.trim();
if(str=="")return;
vararrRslt=makePy(str);
alert(arrRslt);
⑻ js檢測欄位中首個字元是否為字母
||直接取首字母判斷下它的ascii碼就可以了。取首字母內ascii碼可以用string.charCodeAt(0)。A-Z的ascii碼:容65-90,a-z的ascii碼:97-122。以下供參考:
varsSrc="w33333";
varsASC=sSrc.charCodeAt(0);
if((sASC>=65&&sASC<=90)||(sASC>=97&&sASC<=122)){//代碼}
⑼ jquery或javascipte實現標簽內文字按拼音首字母排序
jq:
varwrap=$('div');
varhtml=
wrap.find('a')
.map(function(){//獲取文字
return$.trim($(this).text())
})
.toArray()//轉換jq為數組
.sort(function(a,b){
returna.localeCompare(b)//按照順序排序
})
.map(function(txt){//拼接html
return'<a>'+txt+'</a>';
})
.join('');
wrap.html(html);//輸出
js:
functiontoArray(nodes){
return[].slice.call(nodes,0);
}
varwrap=document.querySelector('div');
varlinks=wrap.querySelectorAll('a');
varhtml=
toArray(links)
.map(function(el,i){//讀取文字
return(el.innerText||el.textContent).trim();
})
.sort(function(a,b){
returna.localeCompare(b)//按照順序排序
})
.map(function(txt){//組合html
return'<a>'+txt+'</a>';
})
.join('');
wrap.innerHtml=html;//輸出