微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 JavaScript 中删除句子的最后一个字符?

如何解决如何在 JavaScript 中删除句子的最后一个字符?

我创建了一个英语到摩尔斯电码的翻译器,它要求每个摩尔斯电码字母之间有一个空格。为了做到这一点,我在字典中的每个字母后添加一个额外的空格,如下所示。 但是,这意味着在句子的末尾有一个额外的空格 (" ")。有什么办法可以去掉这个空间?

我尝试使用 str.slice 函数,它删除了最后一个字母的整个莫尔斯电码版本。

function morseCode(str) {
morseCode = {
"A": ".- ","B": "-... ","C": "-.-. ","D": "-.. ","E": ". ","F": "..-. ","G": "--. ","H": ".... ","I": ".. ","J": ".--- ","K": "-.- ","L": ".-.. ","M": "-- ","N": "-. ","O": "--- ","P": ".--. ","Q": "--.- ","R": ".-. ","S": "... ","T": "- ","U": "..- ","W": ".-- ","X": "-..- ","Y": "-.-- ","Z": "--.. ",'1':'.---- ','2':'..--- ','3':'...-- ','4':'....- ','5':'..... ','6':'-.... ','7':'--... ','8':'---.. ','9':'----. ',}

str = str.replace(/[!,?]/g,'');

str = str.replace(/\s/g,'');

return str.toupperCase().split("").map(el => {
   return morseCode[el] ? morseCode[el] : el;
}).join("");

};

解决方法

为与间距无关的值包含空格是一种不好的做法;莫尔斯电码字符没有空格。

我建议您在任何英文句子上使用 String.prototype.split(),例如:

englishSentence.split().map(englishChar => morseCodeChar[englishChar]).join(' ');

您可能必须使用英语句子中的 .toLowerCase().toUpperCase().filter() 坏字符。

,

由于 str.slice 函数将两个索引之间的切片部分作为子字符串返回,在您的情况下,您应该使用 str.slice(0,-1),即等于 str.slice(0,str.length - 1)。这意味着将返回从零索引开始的每个字符,而没有传递字符串的最后一个字符。

function morseCode(str) {
    morseCode = {
    "A": ".- ","B": "-... ","C": "-.-. ","D": "-.. ","E": ". ","F": "..-. ","G": "--. ","H": ".... ","I": ".. ","J": ".--- ","K": "-.- ","L": ".-.. ","M": "-- ","N": "-. ","O": "--- ","P": ".--. ","Q": "--.- ","R": ".-. ","S": "... ","T": "- ","U": "..- ","W": ".-- ","X": "-..- ","Y": "-.-- ","Z": "--.. ",'1':'.---- ','2':'..--- ','3':'...-- ','4':'....- ','5':'..... ','6':'-.... ','7':'--... ','8':'---.. ','9':'----. ',}
    
    str = str.replace(/[!,?]/g,'');
    
    str = str.replace(/\s/g,'');
    
    return str.toUpperCase().split("").map(el => {
       return morseCode[el] ? morseCode[el] : el;
    }).join("").slice(0,-1);  // this returns the string without the last character.
    
};

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。