Манипуляции с несколькими строками с использованием js - PullRequest
1 голос
/ 02 апреля 2019

У меня есть текстовая область, в которую я буду вставлять некоторые данные, например, так:

01-06-2019 <!-- mm-dd-yyyy -->
01-07-2019
01-08-2019
01-09-2019
01-10-2019

И когда я нажимаю, отправьте весь текст внутри текстового поля, чтобы получить вывод под чем-то вроде этого

06/01/2019 <!-- dd/mm/yyyy -->
07/01/2019
08/01/2019
08/01/2019
10/01/2019

Мне удалось это на python, используя этот код

filepath = ('date.txt')
f = open("newdate.txt", "w+")
new = []
with open(filepath) as fp:
    for line in fp:
        line = line.strip('\n')
        new = line.split("-")
        f.write(new[1] + "/" + new[2] + "/" + new[0] + "\n")
        print(new[1] + "/" + new[2] + "/" + new[0] + "\n")
f.close()

Я новичок в JavaScript и jQuery, поэтому мне интересно, как мне этого добиться в jQuery

Ответы [ 6 ]

1 голос
/ 02 апреля 2019

Вы можете зарегистрировать прослушиватель onsubmit в своей форме, а затем в обработчике выполнить логику анализа значения текстовой области.

Следующий пример является примером того, как это сделать:

// Register 'submit' event listener
document.querySelector('#form')
  .addEventListener('submit', e => {
    // Prevent default action so that page doesn't refresh
    e.preventDefault();

    // Get the text from the textarea
    let text = document.querySelector('#text').value;

    // Split the lines
    let converted = text.split('\n')
      // Convert each line
      .map(str => {
        // Extract the date parts
        let [mm, dd, yyyy] = str.split('-');
        
        // Return the desired format by joining the date parts with /
        return [dd, mm, yyyy].join('/');
      });

    // Print result to console
    console.log(converted);
  });
<form id="form">
  <textarea id="text"></textarea>
  <button type="submit">submit</button>
</form>
0 голосов
/ 02 апреля 2019

Попробуйте использовать регулярное выражение замены. Regex demo здесь

let dates = document.getElementById('dates');

console.log(dates.value.replace(/(\d{2})-(\d{2})-(\d{4})/g, '$2/$1/$3'))
<textarea id="dates" rows="6" cols="30">
01-06-2019 <!-- mm-dd-yyyy -->
01-07-2019
01-08-2019
01-09-2019
01-10-2019
</textarea>
0 голосов
/ 02 апреля 2019

Вы можете получить значение текстовой области, нажав на кнопку отправить, как показано ниже.Вы можете выполнять манипуляции с датой (Изучите некоторые манипуляции со строками для форматирования. См. - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)

function formatText() {
  var textAreaValue = $('#my-text').val();
  // Do the necessary formatting here
  var formattedText = 'test';
  $('#my-text').val(formattedText);
}
.btn {
  display: block;
  width: 100px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div>
  <textarea id="my-text"></textarea>
  <button class="btn" onClick="formatText()">Submit</button>
</div>
0 голосов
/ 02 апреля 2019
function convertToFormat(data) {
    var _dataSplit = data.split('\r\n');
    var _length = _dataSplit.length;

    var _finalData = '';

    for (var i=0;i<_length;i++) {
        var _dataDSplit = _dataSplit[i].split('-');
        _finalData += _dataDSplit[1]+'/'+_dataDSplit[0]+'/'+_dataDSplit[2]+'\r\n';
    }

    return _finalData;
}
0 голосов
/ 02 апреля 2019

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

const datesArr = [
  '01-06-2019',
  '01-07-2019',
  '01-08-2019',
  '01-09-2019',
  '01-10-2019',
]
const newDates = []
const regex = /(\d\d)-(\d\d)-(\d{4})/

for (let date of datesArr) {
    newDates.push(date.replace(regex, '$2/$1/$3'))
}

console.log(newDates)
0 голосов
/ 02 апреля 2019

используйте следующее регулярное выражение-замена для значения textarea

value.replace(/(-)(?=\d)/g,'/')

(-)(?=\d) найдет все тире '-', предшествующие числу

function submit() {
  let r=data.value.replace(/(-)(?=\d)/g,'/');
  console.log(r);
}
textarea { width: 200px; height: 100px; }
button { display: block }
<textarea id="data">
01-06-2019 <!-- mm-dd-yyyy -->
01-07-2019
01-08-2019
01-09-2019
01-10-2019
</textarea>

<button onclick=submit()>Submit</button>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...