Avatar billede jimsim Nybegynder
18. maj 2000 - 15:09 Der er 31 kommentarer og
1 løsning

Et lille bitte program...

Er der nogen der kan lave et lille program, der udskifter et tegn med et andet.
Ligsom når man bruger notepad 'søg - erstat'.
Men jeg skal bruge et der forubestemt skift bestemtet tegn. Og kan se forskel på store og små tegn(det ved jeg ikke om kan lade sig gøre med de store tegn)

eks. | skal skiftets ud med æ
Avatar billede olebole Juniormester
18. maj 2000 - 15:34 #1
<ole>
Her er et bud i java script:

<html>
<head>
<script language="javascript">
<!--
var str = "aaaaaaaaabaaaaaaaabaaaaaaaaaabaaaaaa";

function skiftOgErstat(which,wanted) {
    while (str.indexOf(which)!=-1) {
        astr = str.substring(0,str.indexOf(which));
        bstr = str.substring(str.indexOf(which)+1,str.length);
        str = astr+wanted+bstr;
        //alert(str);
    }
    alert('Slut strengen:\n'+str);
}
//-->
</script>
</head>
<body>
<a href="java script:skiftOgErstat('b','f');">skift</a>
</body>
</html>

...det skifter alle b'er ud med f'er i strengen 'str'. Der er et par alerts, du kan lege med (de skal selvfølgelig slettes, når scriptet skal bruges).
/Vh
</bole>
Avatar billede jimsim Nybegynder
18. maj 2000 - 15:46 #2
Nu er jeg ikke så hård i Java... og kan ikke lige se hvordan det hænger sammen med det jeg skal bruge. Men jeg kan lige fortælle noget mere, og så hvis du vil forklare lidt mere om dit Java-script.

Jeg har en *.txt fil hvori der er en masse tegn der skal skiftets.
Som feks. + skiftets ud med æ
og ^ ud med p.
En linie kunne se sådan ud:
|eg g¨r en tur hen ad ve|en.

Som så skal se sådan ud bagefter:
Jeg går en tur hen ad vejen.


Er det svært at lave???
Avatar billede olebole Juniormester
18. maj 2000 - 16:17 #3
Det er jeg heller ikke - men rimelig hård i JavaScript...det er to forskellige ting  ;-)
Dette her skulle være til at forstå:

<html>
<head>
<script language="javascript">
<!--

function skift(which) {
// 'str' sættes lig formens textarea's værdi
    str = which.myText.value;
// 'soeg' sættes lig formens første textfelt's værdi
    soeg = which.et.value;
// 'erst' sættes lig formens andet textfelt's værdi
    erst = which.to.value;
// Så længe 'str' indeholder 'soeg', gør vi følgende
    while (str.indexOf(soeg)!=-1) {
// Vi laver en første del-streng 'astr' - hen til det søgte tegn (soeg)
        astr = str.substring(0,str.indexOf(soeg));
// Vi laver en anden del-streng 'bstr' - fra én plads efter 'soeg' til slutningen af 'str'
        bstr = str.substring(str.indexOf(soeg)+1,str.length);
// Vi klistrer de to del-strenge sammen - med 'erst' imellem
        str = astr+erst+bstr;
    }
// Når 'str' ikke længere indeholder 'soeg', sættes formens textarea's værdi lig med den nye streng
    which.myText.value = str;
}

//-->
</script>
</head>
<body>
<form name="textForm">
Min tekst:<br>
<textarea cols="80" rows="20" name="myText"></textarea><br><br><br><br>
S&oslash;g:<br>
<input type="text" size="3" name="et"><br><br>
Erstat med:<br>
<input type="text" size="3" name="to"><br>
<input type="button" value=" S&oslash;g / Erstat " onclick="skift(document.textForm);">
</form>
</body>
</html>

Du kan bare fjerne alle mine kommentarlinier, når du skal bruge det.
At åbne en text-fil kræver, du gør det server-side i f.eks. php. I mit eksempel må du kopiere teksten ind - behandle den - og kopiere den tilbage igen.
/Vh
Avatar billede driis Nybegynder
21. maj 2000 - 14:26 #4
Jeg kan lave et sådant program i VB, hvis du er interesseret.
Avatar billede jimsim Nybegynder
22. maj 2000 - 10:41 #5
Det må du da meget gerne...lyder det svært???
Jeg kan nemlig ikke få olebole's til at virke.
Så kan jeg gi' dig de rigtige data senere på... altså hvilken tegn der skal udsiftets af hvad...
Avatar billede jimsim Nybegynder
22. maj 2000 - 13:55 #6
Her er en oversigt:
 = Å
† = å
 = Ø
› = ø
’ = Æ
‘ = æ
 = ü
‚ = é

Selvom nogle af tegnene ser ens ud, skulle de ikke være det. :o)
Men jeg havde forstillet mig dette:
At jeg har en txt fil, og når jeg køre det igennem dit program, ændre det alle tegnene, og laver så en fil med et nyt efternavn, feks JSH, eller noget i den stil. Men stadig en notepad fil.
Avatar billede olebole Juniormester
22. maj 2000 - 17:44 #7
"Jeg kan nemlig ikke få olebole's til at virke."  Så må du da gøre noget HELT galt! Jeg har lige prøvet at kopiere fra svaret og pasted ind i et dokument og testet i både NS og IE...ingen fejl! Det burde der heller ikke være, da det er ganske standard kodning...?!?
Avatar billede jimsim Nybegynder
23. maj 2000 - 08:33 #8
Ja Ole min fejl... slettede for meget...grrrr
Men Ole, du har bare lavet et ny udgave af notepad søg/erstat... men hvis du kan lave det sådan at man ungår copy/paste og tager hele filen, også dit JavaScript søger og erstater, og derefter laver en anden fil, med efternavnet måske *.ole som så virker i notepad.
Hvis I begge vil lave en version får I selvfølgelig begge point.
Avatar billede jimsim Nybegynder
23. maj 2000 - 08:34 #9
Altså 60 hver...
Avatar billede olebole Juniormester
23. maj 2000 - 08:44 #10
Næ tak, lad bare driis om det ;-)
/Vh
Avatar billede jimsim Nybegynder
23. maj 2000 - 09:18 #11
Hvis du laver det a'la' det er det også godt nok...
Hvis du sætter data'erne ind, så copy/paster jeg, trykker på en knap, dit JavaScript søger/erstater, så copy'er jeg det tilbage...
Også kan muligheden med søg/erstat bare blive der HVIS nu at der senere hen kommer noget andet der skal ændres.
Altså:
Et tekst felt
En knap der laver om på de forudindtastet data.
Et 'søg' felt
Et 'erstat med' felt
En 'do it' knap

Altså det nye: en knap hvor der laves om med de forudindtastet data.
Håber jeg er til at forstå...
Avatar billede olebole Juniormester
23. maj 2000 - 10:06 #12
Eeeehhhh...det forstår jeg ikke rigtig? Må jeg i øvrigt spørge om, hvad du skal bruge det til?
Avatar billede jimsim Nybegynder
23. maj 2000 - 10:22 #13
Altså det script du lavede før var okay, men jeg vil gerne have en knap ind der kender til de forskellige tegn der skal skiftets  = Å, † = å osv... altså idet man trykker på knappen laver den om i teksten, hvis du kan tilføje den i det script du har lavet vil det være helt fint...
Jeg har et program der åbenbart ikke kender det danske tegnsæt
Avatar billede driis Nybegynder
23. maj 2000 - 16:50 #14
Beklager at jeg lovede for meget; men jeg har ganske uventet fået meget travlt - Så de næste 14 dage får jeg ikke tid til at lave det program, du søger, jimsim. Hvis du stadig er interesseret om 14 dage, og du ikke har løst problemet på anden vis, så kan jeg godt lave programmet.
Avatar billede jimsim Nybegynder
23. maj 2000 - 22:53 #15
Tjaaaa hvis Ole er ved at lægge sidste hånd på værket... så bliver det vist ikke nødvedigt... men jeg venter og ser...
Avatar billede olebole Juniormester
24. maj 2000 - 04:42 #16
Her er en, hvor du tager tegnene fra et array:

<html>
<head>
<script language="javascript">
<!--
var mySwap = new Array(
"a","A",
"b","B",
"c","C",
"d","D",
"e","E",
"f","F",
"g","G",
"h","H",
"\346","\306",
"\370","\330",
"\345","\305"
);

function skift(which) {
    str = which.myText.value;
    for (i=0; i<mySwap.length; i+=2) {
    soeg = mySwap[i];
    erst = mySwap[i+1];
        while (str.indexOf(soeg)!=-1) {
            astr = str.substring(0,str.indexOf(soeg));
            bstr = str.substring(str.indexOf(soeg)+1,str.length);
            str = astr+erst+bstr;
        }
    }
    which.myText.value = str;
}
//-->
</script>
</head>
<body>
<form name="textForm">
Min tekst:<br>
<textarea cols="80" rows="20" name="myText"></textarea><br><br><br><br>
<input type="button" value=" S&oslash;g / Erstat " onclick="skift(document.textForm);">
</form>
</body>
</html>

De sidste tre tegn er 'æ', 'ø' og 'å'. De står som escapede oktal-værdier til deres ANSII coder, da de ikke hører til i det alm. tegnsæt. Du kan de næste par dage hente værdier til andre special-tegn her:
    http://www.webtile.dk/oktal/
Skynd dig, mens det er oppe ;-)

/Vh
Avatar billede jimsim Nybegynder
25. maj 2000 - 09:39 #17
Her er det jeg har fået lavet...men det virker ikke helt.

<html>
<head>
<script language="javascript">
<!--
var mySwap = new Array(


"\217","\305",
"\206","\345",
"\235","\330",
"\233","\370",
"\222","\306",
"\221","\346",
"\201","\374",
"\201","\351"
);

function skift(which) {
    str = which.myText.value;
    for (i=0; i<mySwap.length; i+=2) {
    soeg = mySwap[i];
    erst = mySwap[i+1];
        while (str.indexOf(soeg)!=-1) {
            astr = str.substring(0,str.indexOf(soeg));
            bstr = str.substring(str.indexOf(soeg)+1,str.length);
            str = astr+erst+bstr;
        }
    }
    which.myText.value = str;
}
//-->
</script>
</head>
<body>
<form name="textForm">
Min tekst:<br>
<textarea cols="80" rows="20" name="myText"></textarea><br><br><br><br>
<input type="button" value=" S&oslash;g / Erstat " onclick="skift(document.textForm);">
</form>
</body>
</html>

Prøv at putte den har sætning ind

"bakkevej 56-40 og 71-53","Kal›rvej","nr.40"

Så skifter den godt nok Å'et, men ikke ø'et.
Avatar billede olebole Juniormester
25. maj 2000 - 09:55 #18
Kan hænge sammen med, at '>' har en oktal-tal-værdi på 76! De '233', du bruger er en PC-only-værdi - de 76 BURDE være X-platform.
Altså "\76","\370",

/Vh
Avatar billede jimsim Nybegynder
25. maj 2000 - 10:08 #19
Måske... men kig lige på de her:

"A. Jakobsens V‘nge","Fraugdevej","Venlas"
"bakkevej 56-40 og 71-53","Kal›rvej","nr.40"
"dalslunden","dalsvej","ske"
"gade 61-81","gade","Maylandsv‘nget"
"sumvej","Ejbygade","Mose All‚"


Det ser ud til at det kun er Å'et der virker.
Avatar billede olebole Juniormester
25. maj 2000 - 11:38 #20
Det må være nogle forkerte tegn, du har i dit array. Prøv
"\76","\370",
og
"\335","\345",
og
"54","351",
...de symboliserer
>
†
,

Prøv dem til at starte med og se, om det er dine talværdier, der er forkerte.
Avatar billede jimsim Nybegynder
25. maj 2000 - 13:16 #21
Det virker ikke... :(
Og ‚ er ikke et komma, men et eller andet tegn...
Og › er ikke >

Det er åbenbart så speciele tegn at det ikke kan finde ud af det...
Har du flere forslag :)
Avatar billede jimsim Nybegynder
26. maj 2000 - 21:15 #22
Hva'så Ole er der mulighed for at få det til at virke???
Avatar billede jimsim Nybegynder
05. juni 2000 - 10:32 #23
driis det ser ud til at ole er blevet optaget af noget andet... så hvis du har mod på at prøve er du meget velkommen.
Avatar billede olebole Juniormester
06. juni 2000 - 00:50 #24
Jeg kan nok ikke komme længere uden at være på samme platform (jeg er på Mac) og have det program, du bakser med. Platformene tolker tegn og deres kode forskelligt
Nogen tegn kan have 5-6 forskellige ANSII værdier - og det er ikke til at gætte sig til, hvilken er den rigtige - herfra, hvor jeg er! ;-))
Håber, du forstår...ellers en pudsig lille opgave!
/Vh
Avatar billede jimsim Nybegynder
06. juni 2000 - 09:34 #25
hehe sjov lille ting :o) men jeg venter lige på at driis svare... men ole du skal nok får lidt for ulej'ligheden...
Men jeg har fundet ud af at tegnene oversættets fint i dos... altså † bliver til å osv... men det kan være du allerede viste det. Men det kan være driis kan bruge det. ;o)
Avatar billede jimsim Nybegynder
14. juni 2000 - 08:54 #26
Driis-> havde du mod på at lave sådan et lille program i VB???
Avatar billede driis Nybegynder
14. juni 2000 - 23:26 #27
Ja jimsim, jeg beundrer din tålmodighed! Men nu har jeg dog fået tid til at lave programmet - hent det her:

http://www.driis.mobilixnet.dk/JimSim/Changer.zip

For interesserede poster jeg lige koden til programmet her i næste kommentar.
Avatar billede driis Nybegynder
14. juni 2000 - 23:29 #28
Den downloadede fil skal selvfølgelig bare unzippes og derefter køres setup.exe for at installere
Avatar billede driis Nybegynder
14. juni 2000 - 23:30 #29
Dim L As String
Dim WF As String
Dim F As String
Dim Find(7) As String
Dim Corr(7) As String
Dim I As Integer
Dim P As Integer

Private Sub Form_Load()
Find(0) = ""
Find(1) = "†"
Find(2) = ""
Find(3) = "›"
Find(4) = "’"
Find(5) = "‘"
Find(6) = ""
Find(7) = "‚"

Corr(0) = "Å"
Corr(1) = "å"
Corr(2) = "Ø"
Corr(3) = "ø"
Corr(4) = "Æ"
Corr(5) = "æ"
Corr(6) = "ü"
Corr(7) = "é"

Out.ListIndex = 1
Ext.Enabled = True
End Sub

Private Sub Go_Click()
Fil.ShowOpen
F = Fil.filename

If Out.ListIndex = 0 Then WF = "Workfile.dat"
If Out.ListIndex = 1 Then WF = Left$(F, Len(F) - 3) + Ext.Text
If Out.ListIndex = 2 Then
    Fil.DialogTitle = "Gem ændret fil som..."
    Fil.ShowSave
    WF = Fil.filename
    Fil.DialogTitle = "Vælg fil at ændre..."
End If

On Error GoTo FileErr
Open F For Input As 1
Open WF For Output As 2
On Error GoTo 0

Do
    Line Input #1, L
    For I = 0 To 7
ReCheck:
        If Not InStr(L, Find(I)) = 0 Then
            P = InStr(L, Find(I))
            L = Left$(L, P - 1) + Corr(I) + Right$(L, Len(L) - P)
            GoTo ReCheck
        End If
    Next I
    Print #2, L
Loop Until EOF(1)

Close 1, 2

If WF = "Workfile.dat" Then
    FileCopy WF, F
    Kill WF
    WF = F
End If

MsgBox "Redigeringen er gennemført" + Chr$(13) + Chr$(13) + "Ny fil er gemt som " + WF, vbInformation, "Succes!"

Exit Sub
FileErr:
On Error GoTo 0
MsgBox "Der er opstået en fejl med filen. Prøv igen med en anden fil.", vbExclamation, "Fejl..."

End Sub

Private Sub Out_Click()
If Out.ListIndex = 1 Then
    Ext.Enabled = True
Else
    Ext.Enabled = False
End If
End Sub
Avatar billede jimsim Nybegynder
19. juni 2000 - 10:29 #30
Det ser jo rigtigt godt ud :o) og det virker... JUBIII :)
Mange tak for hjælpen... og det blev lavet i VB??
Også tak for hjælpen til Ole... du får også lidt point for ulejligheden :o).
Avatar billede jimsim Nybegynder
19. juni 2000 - 10:34 #31
Det var meningen at gi' dig Ole 20 point... men det gik altså ikke...hvis du vil ha' dem, må du lige sige hvordan det skal gøres...
Avatar billede olebole Juniormester
19. juni 2000 - 11:15 #32
Det er helt OK...det er tanken, der tæller - og så det, at du fik løst dit problem, selvfølgelig  ;-))
/Vh
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester