我有用戶生成的字符串進來,我需要「清理」它們並只保留包含字母的字母。例如。如何清理一個字符串並只保留Javascript中的字母詞
- 「3個蘋果」 - > 「蘋果」
- 「4公斤蘋果。」 - > 「蘋果」
- 「早上25 LIM版。」 - > 「早上版」(Lim是不只有阿爾法)
我想到做一個拆分「」,然後遍歷單詞,然後添加到結果只有子字符串,只包括字母。任何想法如何以最有效的方式做到這一點?
我有用戶生成的字符串進來,我需要「清理」它們並只保留包含字母的字母。例如。如何清理一個字符串並只保留Javascript中的字母詞
我想到做一個拆分「」,然後遍歷單詞,然後添加到結果只有子字符串,只包括字母。任何想法如何以最有效的方式做到這一點?
let getAlphaWords = (words) => {
// A case-insensitive regex to match alpha characters
const ALPHA_REGEX = /^[a-z]+$/i;
// A function to test if a word only contains alpha characters
let isAlphaWord = (word) => ALPHA_REGEX.test(word);
// Split into words and filter out all that contain non-alpha
let alphas = words.split(' ').filter(isAlphaWord);
// rejoin the words
return alphas.join(' ');
}
這可以用於像這樣:
getAlphaWords("3 apples"); // "apples"
getAlphaWords("4 kg. apples"); // "apples"
getAlphaWords("morning 25 lim. edition"); // "morning edition"
以下是在非ES6代碼以上:
var getAlphaWords = function (words) {
// A case-insensitive regex to match alpha characters
var ALPHA_REGEX = /^[a-z]+$/i;
// A function to test if a word only contains alpha characters
var isAlphaWord = function (word) {
return ALPHA_REGEX.test(word);
}
// Split into words and filter out all that contain non-alpha
var alphas = words.split(' ').filter(isAlphaWord);
// rejoin the words
return alphas.join(' ');
}
@Downvoter,爲什麼你是否低估了這個答案?它通過結構良好和解釋良好的代碼來回答問題。如果你不同意這個問題,那麼請降低/標記這個問題,但不要低估答案 - 根據他們自己的優點來判斷他們。 –
我沒有downvote。其他人做了。你的答案是什麼語言?不是Javascript。看起來像coffescript? – checklist
嗨@checklist,這是[ES6 JavaScript](http://es6-features.org/)。我將編輯答案以添加非ES6代碼。 –
function isWord(inptWord,wordsArray){
try{
var wordRegex = new RegExp(/[a-z]+$/,"i");
if(wordRegex.test(inptWord)){
wordsArray.push(inptWord);
}
}catch(err){
console.error("Err in fn. isWord : %s",err);
}
return wordsArray;
}
function getWordsOnly(inptString){
var resultString = "";
try{
if(typeof inptString == "string"){
var splitWords = inptString.split(" ");
var wordsArray = new Array();
for(var i in splitWords){
wordsArray = isWord(splitWords[i],wordsArray);
}
resultString = wordsArray.join(" ");
}
}catch(err){
console.error("Err in fn. getWordsOnly : %s",err);
}
return resultString;
}
// getWordsOnly(「早上25分鐘版「); ==早晨版
'function filter(input){ var s = input.split(''),str = []; (函數(a){^ a-zA-Z] + $/.test(a)&& str.push(a) },''); return str.join(''); }' – Rayon
http://stackoverflow.com/help/how-to-ask – Rayon
無用的問題,然後......我沒有downvote,但無論誰做了,他們是正確的......你看過我分享的鏈接嗎?發佈這個問題時你有很多觀點嗎?沒有什麼努力..... – Rayon