Vinnaren i pepparkakshustävlingen!
2017-01-20, 17:17
  #1
Medlem
TexasSwedes avatar
Jag behover gara en sokning i en lang strang efter ett antal textsekvenser (i mitt fall ar det filnamn). Jag vet inte filnamnen i forvag, sa jag behover formodligen anvanda regexp.
Maste kodas i vanilla JavaScript, inte jQuery eftersom det kors pa en server (inte i en webblasare).

Bakgrund:
Min kod laser in en extern HTML-fil i en strang. Jag vill sedan hitta alla referenser till filer av typen .js och .css och ersatta dem med nya filnamn.

Har ar ett exempel pa en HTML-fil jag laser in:

HTML-kod:
!DOCTYPE HTML>
<html>
<head>
<title>Yearly Time Statistics</title>
<!-- Load jQuery, Bootstrap and Font Awesome from CDN -->
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.js"></script>
<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<!--  Load jquery.sparkline.min.js from File Cabinet -->
<script src="js/sparklines.js"></script>
<!-- Load Javascript and CSS for charts -->
<script src="charts/highcharts.js"></script>
<script src="charts/data.js"></script>
<script src="charts/modules/drilldown.js"></script>

<!--  Load styles-->
<link	href="custom.css" rel="stylesheet">
</head>

<body>
...
...

Jag vill till exempel byta ut sparklines.js mot //system.na2.netsuite.com/core/media/media.nl?id=255537&c=3383528&h=61ccfe6c8be377f2eee 4&_xt=.js., custom.css mot //system.na2.netsuite.com/core/media/media.nl?id=265210&c=3383528&h=39458dd45c52038311d 0&_xt=.css, etc.

Jag har en funktion att fa fram det nya filnamnet/sokvagen (lat oss kalla funktionen getNewFileName(oldFileName) dar oldFileName skulle vara till exempel sparklines.js), men jag vill alltsa kunna leta igenom HTML/strangen, identifiera alla filnamn som inte borjar med http://, https:// eller // och byta namn pa dem.

Nagra forslag pa hur man kan losa detta?
__________________
Senast redigerad av TexasSwede 2017-01-20 kl. 17:22.
Citera
2017-01-20, 17:25
  #2
Medlem
Citat:
Ursprungligen postat av TexasSwede
Jag behover gara en sokning i en lang strang efter ett antal textsekvenser (i mitt fall ar det filnamn). Jag vet inte filnamnen i forvag, sa jag behover formodligen anvanda regexp.
Maste kodas i vanilla JavaScript, inte jQuery eftersom det kors pa en server (inte i en webblasare).

Bakgrund:
Min kod laser in en extern HTML-fil i en strang. Jag vill sedan hitta alla referenser till filer av typen .js och .css och ersatta dem med nya filnamn.

Har ar ett exempel pa en HTML-fil jag laser in:

HTML-kod:
!DOCTYPE HTML>
<html>
<head>
<title>Yearly Time Statistics</title>
<!-- Load jQuery, Bootstrap and Font Awesome from CDN -->
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.js"></script>
<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<!--  Load jquery.sparkline.min.js from File Cabinet -->
<script src="js/sparklines.js"></script>
<!-- Load Javascript and CSS for charts -->
<script src="charts/highcharts.js"></script>
<script src="charts/data.js"></script>
<script src="charts/modules/drilldown.js"></script>

<!--  Load styles-->
<link	href="custom.css" rel="stylesheet">
</head>

<body>
...
...

Jag vill till exempel byta ut sparklines.js mot //system.na2.netsuite.com/core/media/media.nl?id=255537&c=3383528&h=61ccfe6c8be377f2eee 4&_xt=.js., custom.css mot //system.na2.netsuite.com/core/media/media.nl?id=265210&c=3383528&h=39458dd45c52038311d 0&_xt=.css, etc.

Jag har en funktion att fa fram det nya filnamnet/sokvagen (lat oss kalla funktionen getNewFileName(oldFileName) dar oldFileName skulle vara till exempel sparklines.js), men jag vill alltsa kunna leta igenom HTML/strangen, identifiera alla filnamn som inte borjar med http://, https:// eller // och byta namn pa dem.

Nagra forslag pa hur man kan losa detta?
javascript stödjer ju regex, se string.search() och string.replace()
Citera
2017-01-20, 18:04
  #3
Medlem
TexasSwedes avatar
Citat:
Ursprungligen postat av Oscillation
javascript stödjer ju regex, se string.search() och string.replace()

Jo, det vet jag. Men jag vill fa ut filnamnen, processa dem och sedan stoppa tillbaka dem.
Pseudokod:

Kod:
fileArray = html.getAllFilenames();
fileArray.each( function(index,oldFileName) {
var newFileName = getNewFilename(oldFileName);
html.replace(oldFileName,newFileName)
}
Citera
2017-01-20, 18:21
  #4
Medlem
Citat:
Ursprungligen postat av TexasSwede
Jo, det vet jag. Men jag vill fa ut filnamnen, processa dem och sedan stoppa tillbaka dem.
Pseudokod:

Kod:
fileArray = html.getAllFilenames();
fileArray.each( function(index,oldFileName) {
var newFileName = getNewFilename(oldFileName);
html.replace(oldFileName,newFileName)
}
Du kanske borde använda XPath för att hitta alla filnamn istället då
Citera
2017-01-20, 21:59
  #5
Medlem
TexasSwedes avatar
Citat:
Ursprungligen postat av Oscillation
Du kanske borde använda XPath för att hitta alla filnamn istället då

Ska se om NetSuite stoder Xpath. All min kod kors i den miljon, sa jag kan inte anvanda nagra plugins.
Citera
2017-01-20, 22:46
  #6
Medlem
Citat:
Ursprungligen postat av TexasSwede
Ska se om NetSuite stoder Xpath. All min kod kors i den miljon, sa jag kan inte anvanda nagra plugins.
Tror annars detta kan vara det du ursprungligen var ute efter: https://developer.mozilla.org/en-US/...ts/RegExp/exec
Citera
2017-01-21, 23:03
  #7
Medlem
Povels avatar
Citat:
Ursprungligen postat av TexasSwede
Jo, det vet jag. Men jag vill fa ut filnamnen, processa dem och sedan stoppa tillbaka dem.
Pseudokod:

Kod:
fileArray = html.getAllFilenames();
fileArray.each( function(index,oldFileName) {
var newFileName = getNewFilename(oldFileName);
html.replace(oldFileName,newFileName)
}

som pseudokod betraktat är det rätt ok (fast callbacken till (for-)each har bakvända parametrar). Kom dock ihåg att javascript-replace inte ändrar i strängen du anropar det på, utan en ny sträng returneras...

Och är `html` verkligen både ett objekt som du kan anropa `getAllFilenames()` på samt själva strängen du vill göra ändringar i? Jaja, pseudokod sa du

/p
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback