Разделить число (только идентификатор) из строки в javascript - PullRequest
3 голосов
/ 21 января 2020

Я хочу разделить «Sachin Tendulkar (123456)» на

Name = "Sachin Tendulkar"    
ID  = "123456"

В некоторых случаях у меня есть «320Gangadar Block (MD) (122435)»

Мне нужно разделить числа внутри () фигурные скобки и имя отдельно, я пробовал .split(/(\d+)/), он не работает в "320Gangadar Block (MD) (122435)"

Ожидаемый результат:

Name = "320Gangadar Block(MD)"
ID = "122435"

Ответы [ 3 ]

1 голос
/ 21 января 2020

В регулярном выражении есть некоторые зарезервированные символы, которые имеют особое значение. () являются одним из таких. Чтобы использовать ( или ) или любой другой специальный символ, который вы используете, экранируйте его, используя \

. Вы можете id использовать string.prototype.match. Вам нужно сопоставить каждое слово внутри (). Для этого регулярное выражение будет

/\(\d+\)/

. Используйте slice для удаления () вокруг числа

. Использование split() для того же регулярного выражения и вы получите все буквы до числа как name.

function split(str){
  let [id] = str.match(/\(\d+\)/)
  let [name] = str.split(/\(\d+\)/)
  return [name.trim(),id.slice(1, -1)]
}

console.log(split("Sachin Tendulkar (123456)"))
1 голос
/ 21 января 2020

Лучше всего использовать функцию lastIndexOf в вашей строке, например:

const str = "320Gangadar Block(MD)(122435)";
const idStart = str.lastIndexOf("(");
const name = str.substring(0, idStart);
const id = str.substring(idStart + 1, str.length - 1);

document.getElementById("name").innerText = "Name: " + name;
document.getElementById("id").innerText = "ID: " + id;
<div id="name"></div>
<div id="id"></div>

В этом случае вам не нужны регулярные выражения, они медленнее, чем собственные решения JS.

0 голосов
/ 21 января 2020

вы можете использовать регулярное выражение, чтобы получить (id), а затем получить идентификатор из первого текста.

function getNameId(text) {

  const regex = /\(\d+\)/g;

  const [id] = text.match(regex);

  const userId = id.slice(1, id.length - 1);

  const name = text.slice(0, text.indexOf(id)).trim();

  return {
    name,
    id: userId
  }


}

console.log(getNameId("Sachin Tendulkar (123456)"))

console.log(getNameId("320Gangadar Block(MD)(122435)"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...