ReactJS中如何忽略双引号、逗号及空格比较两个字符串?
在ReactJS中忽略双引号、逗号与空格比较字符串的方案
嘿,这问题我熟!要在ReactJS里忽略双引号("")、逗号和空格来比较两个字符串,关键是先对两个字符串做统一的字符清理预处理,再拿处理后的结果做对比就行。我给你拆解下具体做法:
第一步:写一个字符清理工具函数
先封装一个通用函数,把字符串里的目标字符全部移除。用正则表达式就能轻松搞定:
const cleanString = (str) => { // 处理空值(null/undefined),避免调用replace时报错 if (!str) return ''; // 全局匹配双引号、逗号、空格,替换为空字符串 return str.replace(/[" ,]/g, ''); };
这个正则里的[" ,]就是匹配你要忽略的三个字符,g标记确保把字符串里所有符合条件的字符都替换掉,而不是只替换第一个。
第二步:把清理后的字符串用于比较
接下来把你原有的比较逻辑改成用清理后的字符串就行,原代码片段调整后如下:
const cleanedFirstname = cleanString(Obj.firstname); const cleanedEverContactFirstName = cleanString(this.state.EverContact.firstName.value); if(cleanedFirstname != cleanedEverContactFirstName) { this.state.CRMContact.infoIcon = 'fas fa-edit red'; }
小提醒(可选)
顺便提一句,React官方不建议直接修改this.state的值(比如你代码里的this.state.CRMContact.infoIcon = ...),这种方式不会触发组件的重新渲染,更好的写法是用this.setState()来更新状态:
if(cleanedFirstname != cleanedEverContactFirstName) { this.setState(prevState => ({ CRMContact: { ...prevState.CRMContact, infoIcon: 'fas fa-edit red' } })); }
不过我完全保留了你提供的原代码逻辑,这个只是给你做个最佳实践的参考~
内容的提问来源于stack exchange,提问作者Atika.Akmal
相关产品推荐
相关产品推荐

