function func(str) {
var a = "" , c;
var b = 0;
for(var i = 0; i < str.length; i++)
{
c = str.charAt(i);
if((str[i] != ' ' && str[i] != 'n' && str[i] != 't') || b > 0)
{
a += c;
b++;
}
return a;
}
到目前为止,该功能我已经从左侧删除了空格,但我无法弄清楚从右侧删除空格。任何人都有任何建议。
我认为如果你不尝试在一个循环中完成所有操作,这是最干净的。我会使用循环来查找开头、结尾并复制所需的字符串部分。您仍然几乎只是迭代一次,但您将每个任务与其他任务分开。
function isSpace(c) {
return c == ' ' || c == 'n' || c == 't'
}
function slice(str, from, to) {
var start = from >= 0 ? from : 0;
var end = to <= str.length ? to : str.length;
var a = "";
while (start < end) a += str[start++];
return a;
}
function trim(str) {
var first = 0, last = str.length-1;
while (isSpace(str[first])) first++; // find trimmed start
while (isSpace(str[last])) last--; // find trimmed end
return slice(str, first, last+1); // create the desired substring
}
console.log(JSON.stringify(trim(" foo bar ")));
使用你已经必须执行字符串末尾的相同逻辑,但只需从末尾开始循环并更改构建"a"的方式:
function reverseFunc(str) {
var a = "" , c;
var b = 0;
for(var i = str.length-1; i >=0; i--)
{
c = str.charAt(i);
if((str[i] != ' ' && str[i] != 'n' && str[i] != 't') || b > 0)
{
a = c + a;
b++;
}
}
return a;
}