webForumDet fria alternativet
Logga in / Bli medlem

peka på tecken efter sträng

JavaScript

5 svar · 448 visningar · startad av adde

Medlem sedan jan. 2000120 inlägg
Frågan#1

Hur kan man peka på ett specifikt tecken i en sträng om man endast vet att en viss sträng kommer förekomma precis före?

347658324659034659 Firefox/1.5.0.6

jag vill ha ut tecknen 1,506 ifrån ovanstående rad. Hur gör jag det?

Testade

charAt("Firefox")+1

Men det fungerar inte!

Medlem sedan jan. 2003296 inlägg
#2
var str = "347658324659034659 Firefox/1.5.0.6";
var version = str.split("/")[1];

kanske?

Medlem sedan jan. 2000120 inlägg
#3

Det finns flera / i original strängen, det enda som är säkert unikt är hela strängen (Firefox/) men det kanske går skriva in det?
Ska testa

Medlem sedan jan. 2003296 inlägg
#4

Aha, ja, då borde du kunna köra split("Firefox/") istället.
En annan variant:

var str = "347658324659034659 Firefox/1.5.0.6";
var version = str.substr(str.lastIndexOf("/")+1);
Medlem sedan jan. 2000120 inlägg
#5

Inte direkt snyggt, men det fungerar.

var version2 = str.substr(str.lastIndexOf("/")+1);
dot = /\$|.|\$|\./g;
version2 = version2.replace(dot,"");
version2 = parseInt(version2);

Medlem sedan aug. 20039 340 inlägg
#6

En fråga, exakt varför vill du få ut versionen? Om du vill testa om någon specifik funktion stöds, så finns det i regel bättre sätt.
Sedan en kommentar: Att göra som du vill göra kan bli helt fel. Versionsnumret är där 1.5.0.6, och då"vill du få ut siffran 1506, right? Föreställ dig då att det kan komma en version som heter 2.0.3, som alltså skulle bli 203, ett mycket lägre tal, fast det är em högre version.
Dessutom ser jag ingeting som faktiskt funkar i din kod? ): (Sorry att behöva säga det)
Jag föreslår följande kod, som också är ful, men åtminstone funkar någorlunda.

var str = "347658324659034659 Firefox/1.5.0.6.4";
var ver = str.replace(/.*firefox\/(\d(\.\d+)+)/ig, "$1");
ver = ver.replace(/^(\d\.)(\d*)\.?(\d*)\.?(\d*)\.?(\d*)\.?(\d*).*/ig, "$1$2$3$4$5$6");
ver = parseFloat(ver);
document.write(ver);

Denna kod ger tillbaka versionsnumret som ett decimaltal, i detta fall 1.5064.

258 ms totalt · 4 externa anrop · v20260731065814-full.14655e19
130 ms — deklarationer (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)