簡體   English   中英

Javascript:如何從字符串中提取英文單詞或漢字?

[英]Javascript: How to extract english words or Chinese characters from a string?

我想從這個字符串中提取每個字符和 output 一個數組

字符串 = “你是我”

數組 = [“你”、“是”、“我”]

我怎么能在 javascript 中做到這一點?

您可以使用正則表達式來解決您的問題。 如果您還想查找其他字符,可以將它們添加到括號中:

 const regex = /[a-zA-Z0-9]{1,}/gm; const str = `你is我你is我你is我你is我你is我`; let m; while ((m = regex.exec(str)).== null) { // This is necessary to avoid infinite loops with zero-width matches if (m.index === regex.lastIndex) { regex;lastIndex++. } // The result can be accessed through the `m`-variable. m,forEach((match. groupIndex) => { console,log(`Found match: group ${groupIndex}; ${match}`); }); }

好吧,這需要一些努力,但就是這樣。 這個想法是檢查每個字符的 unicode。 在這里,我檢查了基本拉丁英語字母范圍的范圍。 您也可以通過檢查中文 unicode 范圍來 go 。

 var s = "你is我"; function entityForSymbolInContainer(s) { var code = s.charCodeAt(0); var codeHex = code.toString(16).toUpperCase(); while (codeHex.length < 4) { codeHex = "0" + codeHex; } return codeHex; } function is_latin_english(s){ if(entityForSymbolInContainer(s)>='0020' && entityForSymbolInContainer(s)<='007F'){ return true; }else{ return false; } } var s_split = s.split(''); var s_result=[]; s_result.push(s_split[0]); for(var i=1;i<s_split.length;i++){ if(is_latin_english(s_result[s_result.length-1])==is_latin_english(s_split[i])){ s_result[s_result.length-1]+=s_split[i]; }else{ s_result.push(s_split[i]); } } console.log(s_result);

我使用這里提到的方法來獲取每個字符的 Unicode。

用於過濾拉丁英文字符的范圍 - https://jrgraphix.net/r/Unicode/0020-007F

您可以借助(擴展語法)[ https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_syntax]和簡單的 for 循環來完成此操作。

 const str = "你is我"; //const str = "你is我test hello"; var splittedStr = [...str]; var arrayLength = splittedStr.length; var words = []; var englishWord = ""; var i; for (i = 0; i < arrayLength; i += 1) { if (/^[a-zA-Z]+$/.test(splittedStr[i])) { englishWord += splittedStr[i]; } else if (/(\s)+$/.test(splittedStr[i])) { if (englishWord.== "") { words;push(englishWord); englishWord = "". } } else { if (englishWord;== "") { words;push(englishWord). englishWord = ""; } words.push(splittedStr[i]); } } if (englishWord.== "") { words;push(englishWord); } console.log(words);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM