Jag skulle vilja dela upp en sträng i dom individuella bokstäverna, för att senare jämföra dom med tilllåtna bokstäver, men har ingen riktig aning om hur man gör... Reguljära uttryck skulle kunna vara en väg. Vilka tecken får vara med? Exakt vilket utseende är tillåtet? Ett exempel: ett exempel skulle kunna vara "banan" Är det anagram som vi pratar om, eller får man använda samma bokstav flera gånger? och måste man använda alla orden? Ja, det är helt ok att använda samma bokstav flera gånger! Här är ett exempel där man bara kan använda varje bokstav en gång, men ifall man kommenterar ut raden som är markera i koden så blir det som du vill Nu är jag inte så haj på reguljära uttryck... men borde det inte gå att göra ett uttryck som jämför de godkända tecknena med den inmatade strängen, typ /^[ban]{1,}$/ eller nåt liknande? Borde ju gå att göra... Per(ovan) kanske kan hjälpa dig med det. Om det är raden "Function testWord(letters, word) ..." du syftar på så är det bara en effekt av att du kopierade texten från websidan. Den skall inte vara där. Det verkar funka :) Hej Anders Tack så hjärligt! Använd den som jag skrev i mitt förra svar:Dela upp en sträng i bokstäver?
Split funktionen gissade jag på först, men det verkar som om man måste ha ex. "." eller något annat som man letar efter i strängen, vilket man ju inte har i hela ord...
Någon som har en idé om hur man gör?Sv: Dela upp en sträng i bokstäver?
Sv:Dela upp en sträng i bokstäver?
<%
ord = "Tomat"
for i = 1 to Len(ord)
bokstav = Mid(ord,i,1)
if bokstav = "a" or bokstav = "o" then
Response.Write "Bokstaven '" & bokstav & "' är OK<br />"
else
Response.Write "Bokstaven '" & bokstav & "' är inte OK<br />"
end if
next
%>
// MvH Björne
Sv:Dela upp en sträng i bokstäver?
Då vill jag kolla så att ordet som användren har matat in bara innehåller dom tilllåtna bokstäverna i fråga.
Edit:
Förtydligande:
Syftet är att jag presenterar ett förvalt ord, ex. banan, sen ska användaren plocka ihop så många andra ord som möjligt med just dom bokstäverna.Sv: Dela upp en sträng i bokstäver?
alltså:
Förvalt ord: banan
Användarord: anna (är det ok?)
Användarord: nabba (är det ok?)
// MvH BjörneSv:Dela upp en sträng i bokstäver?
Och när jag ändå är igång och frågar, hur räknar man hur många tecken det finns i en sträng?Sv: Dela upp en sträng i bokstäver?
<%
Response.Write "Referensord: banan" & "<br />"
Response.Write "Testord: banan: " & testWord("banan","banan") & "<br />"
Response.Write "Testord: anna : " & testWord("banan","anna") & "<br />"
Response.Write "Testord: banna: " & testWord("banan","banna") & "<br />"
Response.Write "Testord: nabba: " & testWord("banan","nabba") & "<br />"
Response.Write "Testord: gurka: " & testWord("banan","gurka") & "<br />"
function testWord(letters, word)
for i = 1 to Len(word)
letter = Mid(word,i,1)
index = InStr(letters, letter)
if index = 0 then
testWord = false
exit function
else
' Ta bort raden under ifall "nabba" skall fungera
letters = Left(letters,index-1) & Mid(letters,index+1)
end if
testWord = true
next
end function
%>
// MvH Björne
Sv: Dela upp en sträng i bokstäver?
Len(str) ger dig längden på en sträng.Sv:Dela upp en sträng i bokstäver?
<%
Response.Write "Referensord: banan" & "<br />"
Response.Write "Testord: banan: " & testWord("banan","banan") & "<br />"
Response.Write "Testord: anna : " & testWord("banan","anna") & "<br />"
Response.Write "Testord: banna: " & testWord("banan","banna") & "<br />"
Response.Write "Testord: nabba: " & testWord("banan","nabba") & "<br />"
Response.Write "Testord: gurka: " & testWord("banan","gurka") & "<br />"
Function testWord(letters, word) ...
function testWord(letters, word)
for i = 1 to Len(word)
letter = Mid(word,i,1)
index = InStr(letters, letter)
if index = 0 then
testWord = false
exit function
else
' Ta bort raden under ifall "nabba" skall fungera
letters = Left(letters,index-1) & Mid(letters,index+1)
end if
testWord = true
next
end function
%>
Jag förstår inte riktigt hur man använder den här funktionen...
Vad definierar du vilka bokstäver som får användas?
Var ska "användarens ord" matas in? (kommer ifrån ex. tbWord, via ett form)
Annars var det precis något sånt här jag eftersökte!
Tack!
Sv: Dela upp en sträng i bokstäver?
Vad det gäller hur du använder funktionern så är den första parametern den sträng som innehåller de tecken som du tillåter.
Det andra argumentet är ordet som du vill testa (användarens ord).
Funktionen returnerar true eller false beroende på om ordet är OK eller inte.
// MvH BjörneSv:Dela upp en sträng i bokstäver?
Men, när jag kör koden så får jag inte fram något...
Jag har provat att skriva ut "testWord" längst ner samt i varje del av funktionen, dvs, response.write("false") om det är fel, och response.write("true") om det är rätt... men inget skrivs ut?
Min kod ser ut som följande:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<html>
<head>
<title>Anagram</title>
</head>
<body>
<%
If request.QueryString("action") = "check" Then
letters = plane
word = request.form("tbWord")
function testWord(letters, word)
for i = 1 to Len(word)
letter = Mid(word,i,1)
index = InStr(letters, letter)
if index = 0 then
testWord = false
response.Write("false")
exit function
else
' Ta bort raden under ifall "nabba" skall fungera
'letters = Left(letters,index-1) & Mid(letters,index+1)
end if
testWord = true
response.Write("true")
next
end function
Else
%>
<form name="form1" method="post" action="word.asp?action=check">
<input name="tbWord" type="text" id="tbWord">
<input type="submit" name="Submit" value="Submit">
</form>
<%
End If
%>
</body>
</html>
Sv: Dela upp en sträng i bokstäver?
En "function" kommer inte att köras ifall man inte kallar på den. Anledningen till att man har den är för att det är enklare att köra somma kod-snutt flera gånger.
Sen tror jag att du skall snutta in plane (alltså "plane")
// MvH Björne
Följande fungerar:
<code>
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<html>
<head>
<title>Anagram</title>
</head>
<body>
<%
If request.QueryString("action") = "check" Then
letters = "plane"
word = request.form("tbWord")
response.Write word & ": " & testWord(letters, word)
function testWord(letters, word)
for i = 1 to Len(word)
letter = Mid(word,i,1)
index = InStr(letters, letter)
if index = 0 then
testWord = false
response.Write("false")
exit function
else
' Ta bort raden under ifall "nabba" skall fungera
'letters = Left(letters,index-1) & Mid(letters,index+1)
end if
testWord = true
next
end function
Else
%>
<form name="form1" method="post" action="word.asp?action=check">
<input name="tbWord" type="text" id="tbWord">
<input type="submit" name="Submit" value="Submit">
</form>
<%
End If
%>
</body>
</html>
</code>Sv:Dela upp en sträng i bokstäver?
Skulle du vilja bara dra en snabbgenomgång av hur jag skulle göra för att använda funktionen?
Det verkar vara en bra grejj att kunna :)Sv: Dela upp en sträng i bokstäver?
<code>
response.Write word & ": " & testWord(letters, word)
</code>
// MvH Björne