如何从字符串中删除空格以获取最后一个字符?
const email = "abc@";
const emailWhiteSpace = "abc@ ";
console.log(email.trim()[email.length - 1]) //==> @
console.log(emailWhiteSpace.trim()[emailWhiteSpace.length - 1]) //==> undefinied
有什么办法解决这个问题吗?
答案 0 :(得分:5)
使用正则表达式可能会更容易-匹配一个非空格字符,然后是空格字符,然后是行尾($
):
const lastChar = str => str.match(/(\S)(?=\s*$)/)[1];
console.log(lastChar("abc@"));
console.log(lastChar("abc@ "));
当然,您也可以将修剪后的文本保存在变量中:
const lastChar = str => {
const trimmed = str.trim();
return trimmed[trimmed.length - 1];
};
console.log(lastChar("abc@"));
console.log(lastChar("abc@ "));
答案 1 :(得分:4)
访问长度时,还需要参考修剪后的字符串:
const email = "abc@";
const emailWhiteSpace = "abc@ ";
console.log(email.trim()[email.length - 1]) //==> @
console.log(emailWhiteSpace.trim()[emailWhiteSpace.trim().length - 1])
// ^^^^^^^^
但是,一种更好的方法(首先避免了您的错误)是将修剪后的字符串分配给实际变量:
var emailWhiteSpace = "abc@ ";
var emailWhiteSpaceTrimmed = emailWhiteSpace.trim();
console.log(emailWhiteSpaceTrimmed[emailWhiteSpaceTrimmed.length - 1])
答案 2 :(得分:2)
那是因为emailWhiteSpace.trim()
并没有改变字符串,它返回了一个新的字符串,这意味着emailWhiteSpace.trim().length
与emailWhiteSpace.length
是不同的。
答案 3 :(得分:0)
您可以使用trimEnd()修剪最后一个空格。
const emailWhiteSpace = "abc@ ";
console.log(emailWhiteSpace.trimEnd()[emailWhiteSpace.trimEnd().length-1])
/*
You can also use a separate variable
*/
const trimmedEmail = emailWhiteSpace.trimEnd();
console.log(trimmedEmail[trimmedEmail.length-1]);
答案 4 :(得分:0)
您将修剪件放在错误的位置。应该是
emailWhiteSpace[emailWhiteSpace.trim().length - 1] //-> "@"
这是因为emailWhiteSpace.length返回未修饰的字符串(带有空格)。因此,您可以将修整结果分配给某个变量,或者将其放入索引器中,如图所示。这取决于您要实现的目标。
答案 5 :(得分:0)
我的会是..
const email = "abc@";
const emailWhiteSpace = "abc@ ";
const f = function( v) { v = String(v); return v[v.length-1]};
console.log( f( email.trim())) //==> @
console.log( f( emailWhiteSpace.trim())) //==> @