如果存在另一个字符串,请替换字符串的一部分

时间:2019-09-17 14:54:45

标签: javascript regex ecmascript-6 lodash

我有3个字符串:

str1="RHID='1' AND CD_FF='Cartão Crédito'"
str2="CD_FF='Marca/Modelo'"
str3="CD_FF"

我需要检查str3中是否存在str1,并将CD_FF='Cartão Crédito'替换为str2

我知道这可以用regexp来完成,但是找不到办法。 预先感谢。

4 个答案:

答案 0 :(得分:1)

我认为简单的字符串替换将起作用。如果未找到子字符串,则没有任何替换内容。无需先检查CD_FF

result = str1.replace("CD_FF='Cartão Crédito'","CD_FF='Marca/Modelo'")
console.log(result)

Output: "RHID='1' AND CD_FF='Marca/Modelo'"

搜索不存在的字符串:

wrong = str1.replace("mangoes",str2)
console.log(wrong == str1) 'no change

Output: True

答案 1 :(得分:0)

可以使用正则后向并在其中插入所需变量的正则表达式模式进行操作:

let str1 = "RHID='1' AND CD_FF='Cartão Crédito'";
const str2 = "'Marca/Modelo'";  // no need to hardcode CD_FF here

const variable = "CD_FF";  // can be taken from anywhere

const pattern = new RegExp(`(?<=${variable}=).*`);
str1 = str1.replace(pattern, str2);

console.log(str1);
  

输出:

     
RHID='1' AND CD_FF='Marca/Modelo'

请注意,str3并不需要任何内容​​,并且如果在{{1}中找不到CD_FF(或variable中的任何内容),此代码也不会正确替换。 }}。

答案 2 :(得分:-1)

这里不需要正则表达式,因为您知道要搜索和替换的所有内容的确切值。

const users = [
      {
        "image" : "Assets/test/fernando.jpg",
        "name" : "Fernando",
        "description" : "General Manager",
      },
      {
        "image" : "Assets/test/daniel.jpg",
        "name" : "Daniel",
        "description" : "CEO",
      },
      {
        "image" : "Assets/test/joan.jpg",
        "name" : "Joan",
        "description" : "Manager",
      },
    ];

class HomeScreen extends React.Component {
   ...
   render() {
       return (
         <SafeAreaView style={styles.container}>
           <ScrollView
             style={styles.container}
             contentContainerStyle={styles.contentContainer}>
             { typeof users === 'object' && users.length > 0 && (users.map((user, index) => {
              return (
                  <View key={index} style={{flex: 1, backgroundColor: 'red'}}>
                    <UserCard user={user} />
                  </View>
              )})
            ) }  
           </ScrollView>
         </SafeAreaView>
       );
     }

编辑

根据您的其他评论,我想您是说CD_FF的值可以是什么?因此,一个简单的RegEx就可以在这里工作:

if (str1.includes(str3)) {
  return str1.replace("CD_FF='Cartão Crédito'", str2);
}

在这种情况下,str2仅包含您要替换的部分,而不是整个CD_FF字符串。

答案 3 :(得分:-1)

您可以简单地使用includesreplace字符串方法的组合。

let str1 = "RHID='1' AND CD_FF='Cartão Crédito'";
const str2 = "CD_FF='Marca/Modelo'";
const str3 = "CD_FF";

if (str1.includes(str3)) {
    str1 = str1.replace("CD_FF='Cartão Crédito'", str2);
}