導航:首頁 > 編程語言 > js拼音檢索漢字

js拼音檢索漢字

發布時間:2023-03-25 18:25:41

1. 在js中如何實現自動獲取漢字的五筆首字母

在js中如何實現自復動獲取漢字的制五筆首字母?
你的意思是不是,在頁面如果打「z」,轉換成漢字對應的一些字,然後再根據這些字,來查資料庫,取的相關的數據?
這樣麻煩。
一般都是在存數據的時候,就已經轉換好了對應的拼音。
比如要存:張**
,在存入資料庫的時生成一個對應的拼音:zhang**
,把這個也一起存了,漢字存漢字欄位,拼音存拼音欄位。
查找時輸入z,就直接在拼音欄位里查需要的數據。
如果表允許再增加欄位,還是加個拼音的欄位,查找時候方便,快捷。
網上找個漢字轉換拼音的類,把數據處理一下,存進拼音欄位里。
這個是漢字轉拼音參考:

2. JS 匹配漢字正則

/[\u4e00-\u9fa5]/ 正則只能匹配中文,記住是中文,匹配漢字是不正確;

/\p{Unified_Ideograph}/u是正確的,不需要維核碼護,匹配所有漢字。

移步下面鏈接:

javaScript 正則表達式匹配改棚哪漢字

如和宴果要匹配所有(結尾加上g):

reg = /\p{Unified_Ideograph}/ug

eg:

str.replace(reg, 'aa');

3. 求javascript代碼:地名拼音轉漢字

下面的例子是引用12306的地址,輸入地名全拼顯示中文地名:

<div>
<p><inputtype="text"id="address"/><inputtype="button"id="btn"value="查詢"/></p>
<pid="content"></p>
</div>
<scripttype="text/javascript"src="https://kyfw.12306.cn/otn/resources/js/framework/station_name.js?station_version=1.9050"></script>
<scripttype="text/javascript"src="http://libs..com/jquery/2.0.3/jquery.min.js"></script>
<script>
$(function(){
$('#btn').click(function(){
getCnName($('#address').val());
})
functiongetCnName(name){
vararr=station_names.split('@');
for(variinarr){
varson=arr[i].split('|');
if(son.length>1){
if(son[3]==name){
$('#content').html("查詢結果:"+son[1]);
}
}
}
}
})
</script>

下面是演示效果:

將代碼復制到一個html文件中,在瀏覽器打開就能用了。

4. 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);

5. js怎麼獲取一個漢字的首字母

1、新建一個復html文件,命名為test.html。

6. JS實現輸入拼音搜索中文列表

最近工作中接到了一個需求:一個項型陸目列表,項目名稱可能有中文可能有英文,如果是中文的話,需要實現用戶輸入項目的拼音即可篩選到對應項目的功能。

完成了之後覺得可以在公眾號里給大家分享一下,給有需要的人一個參考吧。

項目框架用的是react,所以先creat-react-app

比如create-react-app pinyin

渲染選擇框的組件用的是antd的Select組件,所以需要先引入antd,具體引入的方法參照antd官方文檔,已經寫得很清楚了

以上准備工作做好後,目前的目錄結構應該如下圖所示:

├── README.md

├── package.json

├── package-lock.json

├── config-overrides.js

├── public

│    ├── favicon.ico

│    ├──index.html

      └── manifest.json

├── src

│   ├── App.css

│   ├── App.js

│   ├── App.test.js

│   ├── index.css

│   ├── index.js

│   ├──logo.svg

│   └── registerServiceWorker.js

現在在src文件夾下新建一個components文件夾,components文件夾中新建隱基一個SelectPinYin文件夾,SelectPinYin文件夾下新建一個index.js和PinYin.js

PinYin.js文件中主要放置拼音和各個拼音對應灶租謹的中文字元串,方便組件調用

export const SimplePinYin = {

py: [

        [ 'a','阿啊呵腌吖錒啊呵嗄啊呵啊呵阿啊呵' ],

        [ 'ai','哀挨埃唉哎捱鎄呆挨癌皚捱矮哎藹靄噯愛礙艾唉哎隘曖噯璦嗌嬡砹' ],

        [ 'an','安諳鞍氨庵桉鵪廠俺銨揞垵案按暗岸黯胺犴' ],

        [ 'ang','骯昂盎' ],

        [ 'ao','熬凹熬敖囂嗷鏖鰲翱獒聱螯廒遨襖拗媼奧澳傲懊坳拗驁嶴鏊' ],

        [ 'ba','八吧巴叭芭扒疤笆粑岜捌八拔跋茇菝魃把靶鈀把爸罷霸壩耙灞鮁吧罷' ],

        [ '','掰白百擺伯柏佰捭敗拜唄稗' ],

        [ 'ban','般班搬斑頒扳瘢癍版板阪坂鈑舨辦半伴扮瓣拌絆' ],

        [ 'bang','幫邦浜梆膀榜綁棒膀傍磅謗鎊蚌蒡' ],

[ 'bao','包胞炮剝褒苞孢煲齙薄雹保寶飽堡葆褓鴇報暴抱爆鮑曝刨瀑豹趵' ],

        [ 'bei','背悲杯碑卑陂埤萆鵯北被備背輩倍貝蓓憊悖狽焙邶鋇孛碚褙鐾鞴臂唄' ],

...

]

}

內容太多,只能復制這樣一小部分,其餘部分可以參考下面這條鏈接,然後改成上面那種格式就可以了。

http://www.cnblogs.com/meteoric_cry/p/5954547.html

接下來開始寫組件

要做到拼音搜索匹配到中文,所以調用this.selectPinYin函數,下面開始寫selectPinYin函數

當input為中文時:

return option.props.children.toLowerCase().indexOf( input.toLowerCase() ) >= 0;

當input為字母時:

const value = option.props.children.toLowerCase().split( '' );

const newValue = value.map( item => this.chineseChangePY( item ) ).join( '' );

return newValue.indexOf( input.toLowerCase() ) >= 0;

思路:

①    將列表中的每項內容,即option.props.children轉成小寫(萬一不全是中文),然後進行分割,split('')把字元串轉成數組

②    遍歷得到的數組,並把每一個元素傳遞給chineseChangePY函數

③    chineseChangePY函數的作用:如果元素不是中文,直接返回;如果是中文,遍歷PinYin.js中的數組,與每個子數組的第二個元素即中文字元串對比,如果元素在這個中文字元串里,返回中文字元串所在數組的第一個元素,即所需要的拼音

④    將處理過的數組轉成字元串

⑤    和input進行對比,存在返回true,不存在返回false

bug說明: 比如遇到生僻字的時候,PinYin.js中沒有收錄進這個中文,就無法匹配。比如遇到多音字的時候,「藏」:既可以cang也可以zang,cang排在zang前面,當遍歷匹配的時候遇到cang就已經返回了,所以如果有用戶輸入zang就匹配不到藏字。

如果有更好的方法,歡迎討論交流。

7. 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 '';
}
}

8. js中如何實現輸入漢字的拼音聲母出現對應的漢字

和google的輸入提示一個道理,幾乎所有Ajax入門書都講這個。
簡單的說,輸入框的onchange事件的響應函數裡面增加一個xmlhttp請求,
伺服器響應請求返回提示更新頁面。
但是細節上考慮要多復雜有多復雜,
首先就是拼音到漢字,你需要找輸入法的源代碼,
然後就是緩存,資料庫,安全性等等……
方案二:純js
用js寫一個輸入法……
大致思路是頁面用按音序排列的編碼,如GB2312,然後以音序映射到字元編碼上

9. 用Javascript如何實現在輸入框中輸入漢字拼音的首字母動態過濾相應的漢字

把漢字先轉成拼音(網路一下就有代碼)

再用ajax來更新

10. 求 js 文本框輸入拼音出現下拉框列表的特效代碼 就像百度搜索框一樣 要完整demo 可完美遷移。

這個說簡單不簡單,說難不難,如果你想非常精確,非常優化的提示,需要很多人工干預,
如果是完全自動化處理也是可能的,關鍵是你要用哪一門後台語言。本人只擅長PHP,先講下原理。
就是把你首先你要篩選出一堆提示關鍵字, 按拼音的字母排序,然後,每次ajax查詢時候如果用戶輸入純英文,就跟漢字首字母比較。比如你給的JS,匹配字「即時,檢索,解釋"什麼的,就可以顯示。
這時候你要說了,我怎麼取漢字首字母,難道手工打上去並排序么。這其實可以用程序來取。網路找「jsp把漢字轉拼音」或者php把漢字轉拼音,這些都有現成的函數。做一次2次開發,用個頁面接收你輸入的關鍵字取每個拼音首字母,然後輸入到資料庫關鍵字表中,輸出到txt、xml、內存緩存做關鍵詞提示的時候可以再按拼音和優先順序排序,mysql是可以用拼音排序的。比如下面的數據項(僅供參考,你喜歡怎麼寫都行)
建設 /jianshe / JS / 0 / 1
這樣就一行。第一項主鍵,第二項是全拼音索引,用來排序和備用,最後2個是查詢的次數和手工的加權數,

然後伺服器查詢的時候,依靠第三項JS,查詢出一堆符合的漢字,結合後2位數算出優先順序大小顯示前10個就可以。用戶查詢後獲取他用的關鍵字,然後查詢次數+1。
你既然寫過這類程序,這個檢索漢字功能關鍵就是轉拼音的2次開發,取首字母並排序生成一個新型的詞庫。也不算太有差異。

閱讀全文

與js拼音檢索漢字相關的資料

熱點內容
maya粒子表達式教程 瀏覽:84
抖音小視頻如何掛app 瀏覽:283
cad怎麼設置替補文件 瀏覽:790
win10啟動文件是空的 瀏覽:397
jk網站有哪些 瀏覽:134
學編程和3d哪個更好 瀏覽:932
win10移動硬碟文件無法打開 瀏覽:385
文件名是亂碼還刪不掉 瀏覽:643
蘋果鍵盤怎麼打開任務管理器 瀏覽:437
手機桌面文件名字大全 瀏覽:334
tplink默認無線密碼是多少 瀏覽:33
ipaddgm文件 瀏覽:99
lua語言編程用哪個平台 瀏覽:272
政采雲如何導出pdf投標文件 瀏覽:529
php獲取postjson數據 瀏覽:551
javatimetask 瀏覽:16
編程的話要什麼證件 瀏覽:94
錢脈通微信多開 瀏覽:878
中學生學編程哪個培訓機構好 瀏覽:852
榮耀路由TV設置文件共享錯誤 瀏覽:525

友情鏈接