2016-10-05 69 views
-3

我有用戶生成的字符串進來,我需要「清理」它們並只保留包含字母的字母。例如。如何清理一個字符串並只保留Javascript中的字母詞

  • 「3個蘋果」 - > 「蘋果」
  • 「4公斤蘋果。」 - > 「蘋果」
  • 「早上25 LIM版。」 - > 「早上版」(Lim是不只有阿爾法)

我想到做一個拆分「」,然後遍歷單詞,然後添加到結果只有子字符串,只包括字母。任何想法如何以最有效的方式做到這一點?

+0

'function filter(input){ var s = input.split(''),str = []; (函數(a){^ a-zA-Z] + $/.test(a)&& str.push(a) },''); return str.join(''); }' – Rayon

+0

http://stackoverflow.com/help/how-to-ask – Rayon

+0

無用的問題,然後......我沒有downvote,但無論誰做了,他們是正確的......你看過我分享的鏈接嗎?發佈這個問題時你有很多觀點嗎?沒有什麼努力..... – Rayon

回答

1
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(' '); 
} 
+0

@Downvoter,爲什麼你是否低估了這個答案?它通過結構良好和解釋良好的代碼來回答問題。如果你不同意這個問題,那麼請降低/標記這個問題,但不要低估答案 - 根據他們自己的優點來判斷他們。 –

+0

我沒有downvote。其他人做了。你的答案是什麼語言?不是Javascript。看起來像coffescript? – checklist

+0

嗨@checklist,這是[ES6 JavaScript](http://es6-features.org/)。我將編輯答案以添加非ES6代碼。 –

0
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分鐘版「); ==早晨版

相關問題