修剪前导和尾随空间

时间:2012-02-10 09:22:03

标签: javascript jquery jquery-mobile

修剪名称“undefined”的前导和尾随空格。

trimName接受一个人作为参数。人永远是一个对象。如果未定义名称,则返回undefined。否则,返回修剪后的名称。

var person = {};
var trimmedName;
person.name;
function trimName(person) {
  // If you do not set this variable to a value, it will be
  // undefined.
  // Do a check here to see if a person's name is defined.
  if (person.name = 'undefined') {
    return 'undefined';
  }
  else {
    trimmedName = person.name.trim();
    return trimmedName;
  }
}
trimName(' sam ');

3 个答案:

答案 0 :(得分:3)

我没有在那里看到问题......但我发现代码存在问题:

  • 您正在使用赋值运算符=,您应该使用比较运算符==
  • 将字符串与字符串'undefined'进行比较不是检查属性是否未定义的方法。
  • trim方法仅存在于IE的最新版本(9)中。
  • 您正在使用字符串而不是对象调用该函数。

代码:

function trimName(person) {
  var trimmed;
  if (typeof person.name == 'undefined') {
    trimmed = 'undefined';
  } else {
    trimmed = person.name.replace(/(^\s+|\s+$)/g, '');
  }
  return trimmed;
}

var trimmedName = trimName({ name: ' sam ' });

演示:http://jsfiddle.net/Guffa/vCkSq/

答案 1 :(得分:2)

你应该做

var personTest = {name: '  sam'};

function trimName(person) {
  // If you do not set this variable to a value, it will be
  // undefined.
  // Do a check here to see if a person's name is defined.
  if (typeof person.name === 'undefined') {
    return 'undefined';
  }
  else {
    var trimmedName = person.name.trim();
    return trimmedName;
  }
}
alert(trimName(' sam '));
alert(trimName(personTest));

pastebin http://jsbin.com/oqovog/edit#source

答案 2 :(得分:0)

function trimName(person) {
  // Check if the name of the person was defined
  // If not, return undefined
  if (person.name == 'undefined') {
    return 'undefined';
  }
  else {
    // Otherwise trim the name and return it.
    return person.name.replace(/^\s+|\s+$/g, '');
  }
}

// Create a person, set his name to " sam " with the spaces.
var person = {};
person.name = " sam ";

// Pass sam (the person object) to your function
// Then alert() the result.
alert(trimName(person));

在这里查看代码并阅读评论。我们创建一个person对象,用前导和尾随空格设置他的名字。我们将它传递给我们测试它是否定义的函数。如果是,我们返回修剪过的名称。

关注已修改。

var person = {}; //creates the object "person"
person.name = prompt('Please enter a name'); //defines name as a property
function trimName(person) { //and gives it a value
// If the property "name" is undefined
// return undefined
if (name === undefined) { //returns the code state "undefined"
  return undefined; // if name is undefined
} else if (person.name === '') { //returns a prompt if no name is entered
  return 'Please enter a name';
} else {
// Trim the "name" property, ensure it is a string
return (person.name + '').trim(); //trims leading/trailing spaces
}
}
trimName(person); //defines object person as a variable of function trimName