如何使切换大小写忽略字符串中的标点符号
How to make switch case ignore punctuation marks in a string?
我有一个<textarea>
,我在其中键入一些内容,然后在下面收到,具体的答案取决于我键入的内容。当我用标点符号写作时,我发现了一个问题,它没有给我预期的答案。如何使切换大小写忽略标点符号?
这是我的代码:
<button onclick="myFunction()">Try it</button>
<textarea id="box" rows="4" cols="50"></textarea>
<p id="output"></p>
<script>
function myFunction() {
var text = document.getElementById("output");
var str = document.getElementById("box").value.toLowerCase();
switch(str){
case "hi": text.innerHTML = "Hi there!";break;
case "hello": text.innerHTML = "Hello,hello!";break;
case "good morning": text.innerHTML = "Good morning, pal!";break;
case "good evening": text.innerHTML = "Good evening, sir!";break;
default:
text.innerHTML = "I don't know what to say. Try to say 'hello' or 'hi'.";break;
}
}
</script>
解决方案是在将字符串传递到开关之前从字符串中删除所有标点符号:
运行代码
var input = "H.E,L:;!?L()[o]{}";
// You can add more punctuation into the regex if you need
var str = input.toLowerCase().replace(/[.,:;!?(){}'[']]+/g, '');
var result;
switch(str){
case "hi": result = "Hi there!";break;
case "hello": result = "Hello,hello!";break;
case "good morning": result = "Good morning, pal!";break;
case "good evening": result = "Good evening, sir!";break;
default:
result = "I don't know what to say. Try to say 'hello' or 'hi'.";break;
}
输出:
Hello,hello!
BTW:在你的特定情况下,我会使用一个对象而不是开关盒:
运行代码
var responses = {
hi: "Hi there!",
hello: "Hello,hello!",
"good morning": "Good morning, pal!",
"good evening": "Good evening, sir!"
};
var default_response = "I don't know what to say. Try to say 'hello' or 'hi'.";
var input = "H.E,L:;!?L()[o]{}";
var key = input.toLowerCase().replace(/[.,:;!?(){}'[']]+/g, '');
var result = key in responses ? responses[key] : default_response;
相关文章:
- 如何在JavaScript中将字符串转换为函数引用
- jQuery中是否内置了任何字符串格式化函数
- Javascript,有没有一种方法可以将数组写成没有逗号或空格的单个文本字符串
- ng打开空字符串
- 正则表达式在字符串中找到base64
- 如何将字符串值从php页面发送到java脚本页面
- 子字符串/正则表达式以获取字符串中保存的 SRC 值
- 字符串在将其传递给另一个活动Android JavaScript时读取Null
- 对id以某个字符串开头的元素进行计数
- Javascript逻辑运算符和字符串/数字
- 反向字符串比较
- 如何有效地将游戏数据存储在URL查询字符串中
- 可变大小的JavaScript字符串如何成为基元类型
- 将DOM节点值与字符串Javascript进行比较
- 如何使切换大小写忽略字符串中的标点符号
- 如何使用Javascript将十三位数字缩短(编码)为数字、字母和标点符号的短字符串
- Javascript regex验证密码字符串(转义标点符号)
- 如何使用javascript将字符串解析为单词和标点符号
- 删除字符串中单词开头和结尾的标点符号
- 使用正则表达式将任何字符串分隔成一个完整的单词,标点符号&html标记