在空格之前和之后(JS)获取符号

时间:2019-04-24 07:48:16

标签: javascript angular typescript

我在有电话号码的地方有角度分量

例如+36 42534534534

我需要在空格之前获取代码,在空格之前获取电话号码。

我像这样

set phoneNumberResult(value: string) {
    if (this.phoneNumberResult !== value) {
        this.phoneCode = value.substr(0, 3);
        this.phoneNumber = value.substr(5, value.length - 5);
        this.changed.forEach(f => f(value));
    }
}

但是电话代码可以是3或4或5个符号。 因此,我需要获取空格之前和之后的所有符号,以获取phoneCodephoneNumber

如何正确执行此操作?

2 个答案:

答案 0 :(得分:2)

尝试split()并留空格。

const data = [{
    parent_email: 'dsa@hsah.com',
    id: 143,
    unreadCount: 0
  },
  {
    parent_email: 'sumanaqqq@ius.com',
    id: 210,
    unreadCount: 0
  },
  {
    parent_email: 'ffff@gmail.com',
    id: 225,
    unreadCount: 0
  },
  {
    parent_email: 'fam@gmail.com',
    id: 221,
    unreadCount: 0
  },
  {
    parent_email: 'fggfdfg@gmail.com',
    id: 224,
    unreadCount: 0
  }
]
const orderBy = [{
    parent_id: 'fam@gmail.com'
  },
  {
    parent_id: 'ffff@gmail.com'
  },
  {
    parent_id: 'sumanaqqq@ius.com'
  }
]
const length = data.length
const dataOrders = orderBy.reduce((result, item, index) => (result[item.parent_id] = index + 1) && result, {})
const dataOrdered = data.sort((a, b) => (dataOrders[a.parent_email] || length) - (dataOrders[b.parent_email] || length))
console.log(dataOrdered)

答案 1 :(得分:0)

如果字符串输入格式始终相同,则只需使用splitread more about split here),这意味着它的前缀始终以数字隔开,并带有空格。

set phoneNumberResult(value: string) {
    if (this.phoneNumberResult !== value) {
        let [phoneCode, phoneNumber] = value.split(' ');
        this.phoneCode = phoneCode;
        this.phoneNumber = phoneNumber;
        this.changed.forEach(f => f(value));
    }
}
根据您的情况,

split将返回一个数组,其中第一个元素将是分割字符串的左侧,第二个元素将是分割字符串的右侧。

可以玩的小提琴示例:https://jsfiddle.net/mcxuorhf/