Строка в 2D-массив в PDF Javascript - PullRequest
1 голос
/ 06 марта 2019

Я включаю ссылку на файл AIRPORTS.txt, как показано ниже, она встроена в мой PDF-файл в виде вложения.

https://www.dropbox.com/s/phr7rvmgegbrmpj/AIRPORTS.txt?dl=0

Я использовал приведенный ниже код для просмотра myDataкак далее ниже.

// Get the file stream object of the embedded file
var oFile = this.getDataObjectContents("AIRPORTS.txt");
// Convert to a file stream
var myData = util.stringFromStream(oFile, "utf-8");

, который, я думаю, myData - это строка, состоящая из табуляций и разрывов строк.Пожалуйста, поправьте меня, если я ошибаюсь.Здесь он не отображается правильно, но ссылка в выпадающем списке выше должна показывать правильный формат, это должна быть вкладка «ADL», затем «ADELAIDE, AU», затем новая строка, затем «AMS», затем вкладка, затем «AMSTERDAM, NL»,и так далее.Снимки экрана ниже.

ADL ADELAIDE, AU
AMS AMSTERDAM, NL
ATL ATLANTA, GA
BJS BEIJING, CN
BKK BANGKOK, TH
BLQ BOLOGNA, IT
BNE BRISBANE, AU
BOS BOSTON, MA
BWI BALTIMORE, MD
BWN BRUNEI, BN
CAN GUANGZHOU, CN
CLE CLEVELAND, OH
CLT CHARLOTTE, NC
CMH COLUMBUS, OH
CPH COPENHAGEN, DK
CPT CAPE TOWN, ZA
DCA WASHINGTON, DC
DEL DELHI, IN
DEN DENVER, CO
DFW FORT WORTH, TX
DLC DALIAN, CN
DRS DRESDEN, DE
DTW DETROIT, MI
EWR NEWARK, NJ
FLL FT. LAUDERDALE
FMO MUNSTER, DE
FRA FRANKFURT, DE
GUM GUAM, GU
HAM HAMBURG, DE
HGH HANGZHOU, CN
HKG HONG KONG, HK
HND HANEDA, JP
HNL HONOLULU, HI
IAD WASHINGTON, DC
IAH HOUSTON, TX
ICN INCHEON, KR
JED JEDDAH, SA
JFK NEW YORK, NY
KEF REYKJAVIK, IS
KUL KUALA LUMPUR,MY
LAS LAS VEGAS, NV
LAX LOS ANGELES , CA
LCK COLUMBUS, OH
LGA NEW YORK, NY
LHE LAHORE, PK
LHR LONDON, UK
LIS LISBON, PT
MCO ORLANDO, FL
MDW CHICAGO, IL
MEM MEMPHIS, TN
MIA MIAMI, FL
MNL MANILA, PH
MSP MINNEAPOLIS, MN
MSY NEW ORLEANS, LA
MUC MUNICH, DE
MXP MILAN, IT
NAN NADI, FJ
NRT NARITA, JP
OAK OAKLAND, CA
ORD CHICAGO, IL
PDX PORTLAND, OR
PEK BEIJING, CN
PHL PHILADELPHIA,PA
PHX PHOENIX, AZ
PIT PITTSBURGH, PA
PVG SHANGHAI, CN
RGN YANGON, MM
RUH RIYADH, SA
SAN SAN DIEGO, CA
SAT SAN ANTONIO, TX
SEA SEATTLE, WA
SFO SAN FRANCISCO
SGN HOCHIMINH CITY
SIN SINGAPORE, SG
STL ST. LOUIS, MO
SZX SHENZHEN, CN
TPA TAMPA, FL
TPE TAIPEI, TW
YUL MONTREAL, CA
YVR VANCOUVER, CA
YYZ TORONTO, CA

снимок экрана txt файла снимок экрана txt файла снимок экрана PDF-консоли снимок экрана PDF-консоли

Моя цель - преобразовать myData в2D массив, как показано ниже.Должен ли я сначала "РАЗДЕЛИТЬ" их в массив 1D по разрыву строки, а затем каким-то образом "РАЗДЕЛИТЬ" массив 1D в массив 2D?Какой правильный образ мышления и какой пример кода мне стоит посмотреть?Любая помощь приветствуется.Заранее спасибо.

Хотел бы получить этот 2D массив.

var myArray = [
  ["ADL", "ADELAIDE, AU"],
  ["AMS", "AMSTERDAM, NL"],
  ["ATL", "ATLANTA, GA"]
];

С уважением

Alex

Ответы [ 4 ]

0 голосов
/ 07 марта 2019

@ Code Maniac @Taki @ Shidersz

Спасибо, ребята.С вашей помощью, и я придумал ниже (не очень профессионально написано), это было проверено в PDF Javascript Console и работает.Я получу немного больше взломать это.Уверен задаст еще вопросы.

// Get the file stream object of the embedded file
var oFile = this.getDataObjectContents("AIRPORTS.txt");
// Convert to a file stream
var myData = util.stringFromStream(oFile, "utf-8");
var myArray = myData.split("\n");
var r = myArray.length;
for (i = 0; i < r; i++){
myArray[i] = myArray[i].split("\t");
}
console.println(myArray);
0 голосов
/ 06 марта 2019

Разделите первый на \n, затем сопоставьте получившийся массив и разделите каждый на \t:

const result = str.split("\n").map(e => e.split("\t"));

const str = `ADL	ADELAIDE, AU
AMS	AMSTERDAM, NL
ATL	ATLANTA, GA
BJS	BEIJING, CN
BKK	BANGKOK, TH
BLQ	BOLOGNA, IT
BNE	BRISBANE, AU
BOS	BOSTON, MA
BWI	BALTIMORE, MD
BWN	BRUNEI, BN
CAN	GUANGZHOU, CN
CLE	CLEVELAND, OH
CLT	CHARLOTTE, NC
CMH	COLUMBUS, OH
CPH	COPENHAGEN, DK
CPT	CAPE TOWN, ZA
DCA	WASHINGTON, DC
DEL	DELHI, IN
DEN	DENVER, CO
DFW	FORT WORTH, TX
DLC	DALIAN, CN
DRS	DRESDEN, DE
DTW	DETROIT, MI
EWR	NEWARK, NJ
FLL	FT. LAUDERDALE
FMO	MUNSTER, DE
FRA	FRANKFURT, DE
GUM	GUAM, GU
HAM	HAMBURG, DE
HGH	HANGZHOU, CN
HKG	HONG KONG, HK
HND	HANEDA, JP
HNL	HONOLULU, HI
IAD	WASHINGTON, DC
IAH	HOUSTON, TX
ICN	INCHEON, KR
JED	JEDDAH, SA
JFK	NEW YORK, NY
KEF	REYKJAVIK, IS
KUL	KUALA LUMPUR,MY
LAS	LAS VEGAS, NV
LAX	LOS ANGELES , CA
LCK	COLUMBUS, OH
LGA	NEW YORK, NY
LHE	LAHORE, PK
LHR	LONDON, UK
LIS	LISBON, PT
MCO	ORLANDO, FL
MDW	CHICAGO, IL
MEM	MEMPHIS, TN
MIA	MIAMI, FL
MNL	MANILA, PH
MSP	MINNEAPOLIS, MN
MSY	NEW ORLEANS, LA
MUC	MUNICH, DE
MXP	MILAN, IT
NAN	NADI, FJ
NRT	NARITA, JP
OAK	OAKLAND, CA
ORD	CHICAGO, IL
PDX	PORTLAND, OR
PEK	BEIJING, CN
PHL	PHILADELPHIA,PA
PHX	PHOENIX, AZ
PIT	PITTSBURGH, PA
PVG	SHANGHAI, CN
RGN	YANGON, MM
RUH	RIYADH, SA
SAN	SAN DIEGO, CA
SAT	SAN ANTONIO, TX
SEA	SEATTLE, WA
SFO	SAN FRANCISCO
SGN	HOCHIMINH CITY
SIN	SINGAPORE, SG
STL	ST. LOUIS, MO
SZX	SHENZHEN, CN
TPA	TAMPA, FL
TPE	TAIPEI, TW
YUL	MONTREAL, CA
YVR	VANCOUVER, CA
YYZ	TORONTO, CA`

const result = str.split("\n").map(e => e.split("\t"));
console.log(result);
0 голосов
/ 07 марта 2019

Поскольку вы упомянули возможность того, что Array.map() недоступен в вашей среде, вместо этого вы можете попробовать простой цикл for, чтобы приблизиться к той же функциональности, что и карта.

Пример:

let input = `ADL	ADELAIDE, AU
AMS	AMSTERDAM, NL
ATL	ATLANTA, GA`;

let res = input.split("\n");
console.log("Step 1) split by \\n: ", res);

for (let i = 0; i < res.length; i++)
{
    res[i] = res[i].split("\t");
}

console.log("Step 2) split by \\t: ", res);
.as-console {background-color:black !important; color:lime;}
.as-console-wrapper {max-height:100% !important; top:0;}
0 голосов
/ 06 марта 2019

Вы можете сначала разделить на \n, а затем сопоставить и использовать сопоставление для сопоставления первого слова, за которым следует пробел, а затем остаток строки.

let str = `ADL ADELAIDE, AU
AMS AMSTERDAM, NL
ATL ATLANTA, GA
BJS BEIJING, CN
BKK BANGKOK, TH
BLQ BOLOGNA, IT
BNE BRISBANE, AU
BOS BOSTON, MA
BWI BALTIMORE, MD
BWN BRUNEI, BN
CAN GUANGZHOU, CN
CLE CLEVELAND, OH
CLT CHARLOTTE, NC
`

let op = str.split('\n').map(e=> e.match(/^\w+\s|[\w\W]+$/g))

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