Запись вкладок к использованию файла PowerShell

Прежде всего, запуск d.replace(/\s/g, '') удалит все пробелы и из строки d, и поэтому я предполагаю, что вы имели в виду d.replace(/ /g, '').

Кажется, что файл имеет 3 последовательных пробела после каждого слова, что означает, что первый replace удалит только один пробел. Чтобы исправить это, вы можете объединить первый и второй replace с помощью отрицания:

const url = 'https://raw.githubusercontent.com/dwyl/english-words/master/words_alpha.txt';

fetch(url)
	.then(d => d.text())
	.then(d => d.replace(/[^\n]\s/g, ''))
	.then(d => d.replace(/\s/g, "', '"))
	.then(console.log);
    //=> Should print out the words in the expected format.

Причина, почему приведенный выше код объясняется тем, что первый replace удаляет все пробелы (которые не являются символами новой строки), а второй заменяет каждый символ новой строки на ', '.

Один из способов сделать это более читабельным и надежным - использовать .split вместо .replace:

const url = 'https://raw.githubusercontent.com/dwyl/english-words/master/words_alpha.txt';

fetch(url)
	.then(d => d.text())
	.then(d => d.split(/\s+/g))
	.then(d => d.map(word => `'${word}'`))
	.then(d => d.join(', '))
	.then(console.log);
    //=> Should still print out the words correctly.

[ 1124] Второй вариант немного лучше, поскольку он правильно отформатирован (первое слово имеет открывающее ' перед ним, а последнее слово имеет закрывающее ' после него).

18
задан Peter Mortensen 13 July 2015 в 17:50
поделиться

2 ответа

Можно использовать `t для символа табуляции в двойной заключенной в кавычки строке. Можно также упростить вышеупомянутое до:

"$($fields[0])   $($fields[1])   $($fields[2]) $($fields[3])  $($fields[15])  $($fields[17])" | Add-Content $tempInputDir\testoutput.log
50
ответ дан 30 November 2019 в 05:45
поделиться

Присоединиться к назначенным полям вместе с вкладками:

[string]::join("`t", (0..3,15,17 | % {$fields[$_]}))
26
ответ дан 30 November 2019 в 05:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: