finding the word at a position in javascript

前端 未结 6 2071
慢半拍i
慢半拍i 2020-12-10 06:18

For string input of \'this is a sentence\' it must return \'is\' when position is 6 or 7. When position is 0, 1, 2, 3 or 4 result must be \'this\'.

What is the easie

6条回答
  •  旧巷少年郎
    2020-12-10 07:07

    function getWordAt (str, pos) {
    
        // Perform type conversions.
        str = String(str);
        pos = Number(pos) >>> 0;
    
        // Search for the word's beginning and end.
        var left = str.slice(0, pos + 1).search(/\S+$/),
            right = str.slice(pos).search(/\s/);
    
        // The last word in the string is a special case.
        if (right < 0) {
            return str.slice(left);
        }
    
        // Return the word, using the located bounds to extract it from the string.
        return str.slice(left, right + pos);
    
    }
    

    This function accepts any whitespace character as a word separator, including spaces, tabs, and newlines. Essentially, it looks:

    • For the beginning of the word, matched by /\S+$/
    • Just past the end of the word, using /\s/

    As written, the function will return "" if the index of a whitespace character is given; spaces are not part of words themselves. If you want the function to instead return the preceding word, change /\S+$/ to /\S+\s*/.


    Here is some example output for "This is a sentence."

    0: This
    1: This
    2: This
    3: This
    4:
    5: is
    6: is
    7:
    8: a
    9:
    10: sentence.
    // ...
    18: sentence.
    

    Modified to return the preceding word, the output becomes:

    0: This
    1: This
    2: This
    3: This
    4: This
    5: is
    6: is
    7: is
    8: a
    9: a
    10: sentence.
    // ...
    18: sentence.
    

提交回复
热议问题