【发布时间】:2022-01-28 18:15:57
【问题描述】:
我需要几行代码来删除从句子末尾开始的所有感叹号(“!”)。代码应实现如下:
"Hi!" --> "Hi"
"Hi!!!" --> "Hi"
"!Hi") --> "!Hi"
"Hi! Hi!") --> "Hi! Hi"
我尝试过使用 RegEx(负前瞻),但是没有成功:
/(?!^)!/g
非常感谢您对解决方案的简短说明。谢谢!
【问题讨论】:
我需要几行代码来删除从句子末尾开始的所有感叹号(“!”)。代码应实现如下:
"Hi!" --> "Hi"
"Hi!!!" --> "Hi"
"!Hi") --> "!Hi"
"Hi! Hi!") --> "Hi! Hi"
我尝试过使用 RegEx(负前瞻),但是没有成功:
/(?!^)!/g
非常感谢您对解决方案的简短说明。谢谢!
【问题讨论】:
您不需要前瞻。只需匹配末尾的感叹号并用空字符串替换它们。在 PHP 中是:
$string = preg_replace('/!+$/', '', $string);
【讨论】:
您应该使用$ 锚点,它标记了字符串的结尾:
/!+$/gm
m 标志存在,以防你有一个多行字符串。
【讨论】:
我正在为您提供我在 javascript 中实现的解决方案。我不知道您使用的是哪种语言,但无论如何逻辑保持不变。
var text = "!Hi! Hi!!";
var i=text.length - 1;
while(text[i] == "!"){
i--;
}
finalText = text.substring(0,i+1);
console.log(finalText);
Output: !Hi! Hi
您可以使用相同的逻辑在您正在使用的编程语言中实现。如果您想使用正则表达式,那么上面@Barmar 提到的解决方案将完美运行!
【讨论】:
def remove(s):
return s[:-1] if s.endswith('!') else s
应该不错
【讨论】: