webForumDet fria alternativet

peka på tecken efter sträng

5 svar · 446 visningar · startad av adde

addeMedlem sedan jan. 2000120 inlägg
#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!

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

kanske?

addeMedlem 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

jawbreakerMedlem 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);
addeMedlem 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);

nitro2k01Medlem sedan aug. 20039 342 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.

126 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)