4
关注
1955
浏览

用感叹号代替问号

为什么被折叠? 0 个回复被折叠
kinda22 未验证用户 用户来自于: 广东省
2020-09-17 19:55
感谢@acdcj unior,在我之前回答,我没有注意到他已经回答了!我的代码看起来像他的,但更紧凑一点。所有的 function changeIntonation(str, isShouting) { str = str.replace(/\?|\!/g, function(match) { return match == "?" ? "!" : "?"; }); return isShouting ? str.toUpperCase() : str; } 首先我注意到你正在做单个字符大写来就加入他们都在整个字符串。为什么?我只是把整个字符串直接写成大写。 然后我明白了问题是,当您用惊叹号替换问号时,问题和感叹号现在都只有感叹号,所以如果您尝试用问题替换感叹号,则将全部替换它们。 所以我选择用回调替换问题和感叹号标记,并检查回调如果发生是一个或另一个要正确替换。
zhkzyth 未验证用户 用户来自于: 广东省
2020-09-17 13:59

您需要同时替换两个字符。

看看HERE(第二个例子)

solo 未验证用户 用户来自于: 广东省
2020-09-16 18:47

问题是,当你尝试用?更换!然后取代?!,你可能会更换,错误,原来!?已存在。

要解决这一点,你必须更换!?在一个命令,像(using a function argument on String#replace()):

let finalStr = str.replace(/[!?]/g, function(c) { return c === '?' ? '!' : '?'; }); 

而且你不需要调用.toUpperCase()每个字符,你可以用它字符串:

function changeIntonation(str, isShouting) { 
 
    let finalStr = str.replace(/[!?]/g, function(c) { return c === '?' ? '!' : '?'; }); 
 

 
    if (isShouting === true) { 
 
    return finalStr.toUpperCase(); 
 
    } else { 
 
    return finalStr; 
 
    } 
 
} 
 
console.log(changeIntonation("Hey! How are you?", true)); 
 
console.log(changeIntonation("Hey! How are you?", false)); 
 
console.log(changeIntonation("Hey? How are you!", true)); 
 
console.log(changeIntonation("Hey? How are you!", false));

关于作者

问题动态

发布时间
2020-09-15 15:51
更新时间
2022-09-15 16:02
关注人数
4 人关注

相关问题

问号“?”在JS变量中
边缘计算会代替云计算吗?
个人工作笔记 Powered BY WeCenter V4.1.0 © 2024 粤ICP备2020123311号