Удалить псевдоним для строкового текста

пожалуйста, помогите мне,

У меня есть строка, соответствующая SQL-запросу;

let string = `SPMAMA.DOCUMENTO AS DOCUMENTO_MAMA,        
    NVL(SPMAMA.CARNETSALUS,SPMAMA_N.CARNETSALUS) AS CARNETSALUS_MAMA,
    NVL(SPMAMA.NOMBRE1 || ' ' || SPMAMA.NOMBRE2 || ' ' || SPMAMA.APELLIDO1 || ' ' || SPMAMA.APELLIDO2, 
    SPMAMA_N.NOMBRE1 || ' ' || SPMAMA_N.NOMBRE2 || ' ' || SPMAMA_N.APELLIDO1 || ' ' || SPMAMA_N.APELLIDO2) AS NOMBRE_MAMA`;

и я хочу удалить псевдоним "AS NAME_ALIAS". Что-то вроде этого:

let strWithoutAlias = `SPMAMA.DOCUMENTO,        
    NVL(SPMAMA.CARNETSALUS,SPMAMA_N.CARNETSALUS),
    NVL(SPMAMA.NOMBRE1 || ' ' || SPMAMA.NOMBRE2 || ' ' || SPMAMA.APELLIDO1 || ' ' || SPMAMA.APELLIDO2, 
    SPMAMA_N.NOMBRE1 || ' ' || SPMAMA_N.NOMBRE2 || ' ' || SPMAMA_N.APELLIDO1 || ' ' || SPMAMA_N.APELLIDO2)`;

Я не знаю, как использовать split и slice для этого, так как я думаю, что это будет комбинация обоих.

Это мой глупый код;

let strngSplit = `SPMAMA.DOCUMENTO AS DOCUMENTO_MAMA,        
NVL(SPMAMA.CARNETSALUS,SPMAMA_N.CARNETSALUS) AS CARNETSALUS_MAMA,
NVL(SPMAMA.NOMBRE1 || ' ' || SPMAMA.NOMBRE2 || ' ' || SPMAMA.APELLIDO1 || ' ' || SPMAMA.APELLIDO2, 
SPMAMA_N.NOMBRE1 || ' ' || SPMAMA_N.NOMBRE2 || ' ' || SPMAMA_N.APELLIDO1 || ' ' || SPMAMA_N.APELLIDO2) AS NOMBRE_MAMA`.replace(/\r?\n|\r/g, '').split('AS')

🤔 А знаете ли вы, что...
JavaScript можно использовать для создания ботов и автоматизации задач в браузерах с помощью Puppeteer.


1
54
3

Ответы:

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

Обратитесь к приведенному ниже коду для справки:

const input = `SPMAMA.DOCUMENTO AS DOCUMENTO_MAMA,        
    NVL(SPMAMA.CARNETSALUS,SPMAMA_N.CARNETSALUS) AS CARNETSALUS_MAMA,
    NVL(SPMAMA.NOMBRE1 || ' ' || SPMAMA.NOMBRE2 || ' ' || SPMAMA.APELLIDO1 || ' ' || SPMAMA.APELLIDO2, 
    SPMAMA_N.NOMBRE1 || ' ' || SPMAMA_N.NOMBRE2 || ' ' || SPMAMA_N.APELLIDO1 || ' ' || SPMAMA_N.APELLIDO2) AS NOMBRE_MAMA`;

function replaceString(inputString) {
  const replacements = [
    'AS DOCUMENTO_MAMA',
    'AS CARNETSALUS_MAMA',
    'AS NOMBRE_MAMA'
  ];

  let output = inputString;
  replacements.forEach(replacement => {
    output = output.replace(replacement, '');
  });

  return output;
}

console.info(replaceString(input));

Эта работа для меня;

let GROUPBY_CAMPOS = TODOS_CAMPOS.map((e)=> {
            
            e = e.replace(' AS DOCUMENTO_MAMA', '')
            e = e.replace(' AS CARNETSALUS_MAMA', '')
            e = e.replace(' AS NOMBRE_MAMA', '')

            return e.split(' AS ')[0]
        })

Решено

Вы можете использовать регулярное выражение для удаления всех псевдонимов:

/\s+ - пробелы перед AS
как - КАК
\s+ - пробелы после AS
[^\s,]+ - псевдоним, означает что угодно, кроме пробелов и запятой
/ig - без учета регистра + все вхождения

const input = `SPMAMA.DOCUMENTO AS DOCUMENTO_MAMA,        
    NVL(SPMAMA.CARNETSALUS,SPMAMA_N.CARNETSALUS) AS CARNETSALUS_MAMA,
    NVL(SPMAMA.NOMBRE1 || ' ' || SPMAMA.NOMBRE2 || ' ' || SPMAMA.APELLIDO1 || ' ' || SPMAMA.APELLIDO2, 
    SPMAMA_N.NOMBRE1 || ' ' || SPMAMA_N.NOMBRE2 || ' ' || SPMAMA_N.APELLIDO1 || ' ' || SPMAMA_N.APELLIDO2) AS NOMBRE_MAMA`;

const replaced = input.replace(/\s+as\s+[^\s,]+/ig, '');

console.info(replaced);