Replace multiple strings with multiple other strings

前端 未结 18 2287
别那么骄傲
别那么骄傲 2020-11-22 04:14

I\'m trying to replace multiple words in a string with multiple other words. The string is \"I have a cat, a dog, and a goat.\"

However, this does not produce \"I ha

18条回答
  •  耶瑟儿~
    2020-11-22 04:47

    using Array.prototype.reduce():

    const arrayOfObjects = [
      { plants: 'men' },
      { smart:'dumb' },
      { peace: 'war' }
    ]
    const sentence = 'plants are smart'
    
    arrayOfObjects.reduce(
      (f, s) => `${f}`.replace(Object.keys(s)[0], s[Object.keys(s)[0]]), sentence
    )
    
    // as a reusable function
    const replaceManyStr = (obj, sentence) => obj.reduce((f, s) => `${f}`.replace(Object.keys(s)[0], s[Object.keys(s)[0]]), sentence)
    
    const result = replaceManyStr(arrayOfObjects , sentence1)
    

    Example

    // /////////////    1. replacing using reduce and objects
    
    // arrayOfObjects.reduce((f, s) => `${f}`.replace(Object.keys(s)[0], s[Object.keys(s)[0]]), sentence)
    
    // replaces the key in object with its value if found in the sentence
    // doesn't break if words aren't found
    
    // Example
    
    const arrayOfObjects = [
      { plants: 'men' },
      { smart:'dumb' },
      { peace: 'war' }
    ]
    const sentence1 = 'plants are smart'
    const result1 = arrayOfObjects.reduce((f, s) => `${f}`.replace(Object.keys(s)[0], s[Object.keys(s)[0]]), sentence1)
    
    console.log(result1)
    
    // result1: 
    // men are dumb
    
    
    // Extra: string insertion python style with an array of words and indexes
    
    // usage
    
    // arrayOfWords.reduce((f, s, i) => `${f}`.replace(`{${i}}`, s), sentence)
    
    // where arrayOfWords has words you want to insert in sentence
    
    // Example
    
    // replaces as many words in the sentence as are defined in the arrayOfWords
    // use python type {0}, {1} etc notation
    
    // five to replace
    const sentence2 = '{0} is {1} and {2} are {3} every {5}'
    
    // but four in array? doesn't break
    const words2 = ['man','dumb','plants','smart']
    
    // what happens ?
    const result2 = words2.reduce((f, s, i) => `${f}`.replace(`{${i}}`, s), sentence2)
    
    console.log(result2)
    
    // result2: 
    // man is dumb and plants are smart every {5}
    
    // replaces as many words as are defined in the array
    // three to replace
    const sentence3 = '{0} is {1} and {2}'
    
    // but five in array
    const words3 = ['man','dumb','plant','smart']
    
    // what happens ? doesn't break
    const result3 = words3.reduce((f, s, i) => `${f}`.replace(`{${i}}`, s), sentence3)
    
    console.log(result3)
    
    // result3: 
    // man is dumb and plants

提交回复
热议问题