Click to See Complete Forum and Search --> : simple string search and replace function - HELP PLEASE


Kimara
05-05-2003, 09:44 AM
Hiya folks

I have a little project for a school i am trying to finish for tommorrow, all is done except one module.

The pupils have 12 english words, and they type their own version of the words into a form.

They then write a sentance using the english words and press a button to convert ANY of the 12 english words used into their version of the wors.

I am playing around with spli/join and RegExp functions at the moment, but time is ticking away and I could really do with some help, so if theres anyone out there who can help me, it would be very much appreciated.

CODE SO FAR:

<script language="JavaScript" type="text/javascript

oldWordArray = new Array(12)
oldWordArray = ["teachers","my house","tonight","bus","food","bike","enemies","school","car","tommorrow","parents","friends"]


function fillArr() {

var wordArray = new Array()

for(i=0;i<12;i++){
wordArray[i] = document.forms[0].elements[i].value
//alert(wordArray[i])
}

var FullString = document.forms[0].english.value

for(var i=0;i<wordArray.length;i++){
var SelectedString = oldWordArray[i]

var ReplaceString = wordArray[i]

var NewString = FullString.split(oldWordArray[i]).join(wordArray[i])

document.forms[0].english.value = NewString
}
}

</script>

AND THE FORM IS SIMPLY: (table formatting take out for clarity)

<form name="form1">
<input name="Word0" type="text" class="textfields" id="Word0" size="25" maxlength="18">

<input name="Word1" type="text" class="textfields" id="Word1" size="25" maxlength="18">
<input name="Word2" type="text" class="textfields" id="Word2" size="25" maxlength="18">
<input name="Word3" type="text" class="textfields" id="Word3" size="25" maxlength="18">
<input name="Word4" type="text" class="textfields" id="Word4" size="25" maxlength="18">
<input name="Word5" type="text" class="textfields" id="Word5" size="25" maxlength="18">>>
<input name="Word6" type="text" class="textfields" id="Word6" size="25" maxlength="18">
<input name="Word7" type="text" class="textfields" id="Word7" size="25" maxlength="18">
<input name="Word8" type="text" class="textfields" id="Word8" size="25" maxlength="18">
<input name="Word9" type="text" class="textfields" id="Word9" size="25" maxlength="18">
<input name="Word10" type="text" class="textfields" id="Word10" size="25" maxlength="18">
<input name="Word11" type="text" class="textfields" id="Word11" size="25" maxlength="18">


<textarea name="english" cols="60" rows="4" id="english"> </textarea>

<input type="button" name="convert" class="buttons" value="PRESS TO CONVERT INTO YOUR LANGUAGE" onClick="fillArr()">

</form>

I hope that someone can point me in the right direction

thanks for your time

kimara

Jona
05-05-2003, 12:44 PM
Your code works, believe it or not, but it works backwards. The part that says, "FullString.split()" etc., is searching the "english" textbox for the string in the previous textbox elements.

Kimara
05-07-2003, 05:24 AM
HIya and thanks for your answer

I came up with a solution before I got your answer, it's not elegant but it works..now it's uploaded I will have some time to re-code it much more simply.

The actual page is an .asp page so that the pupils can save their work and have their module access tracked and managed, but to see the working version, I made a link to a simple .html page.

www.thelec.co.uk/my_new_language.htm

HERES THE CODE: (formatting etc removed for clarity)

<script language="JavaScript" type="text/javascript"><!--//This works for IE4+ only!

oldWordArray = new Array(12)
oldWordArray = ["teachers","my house","tonight","bus","food","bike","enemies","school","car","tommorrow","parents","friends"]
//alert(oldWordArray[0])

function fillArr() {

var wordArray = new Array()

for(i=0;i<12;i++){
wordArray[i] = document.forms[0].elements[i].value
//alert(wordArray[i])
}

var FullString = document.forms[0].english.value
var pattern = /\bteachers\b/ig
var NewString = FullString.replace(pattern, wordArray[0]);
document.forms[0].english.value = NewString

var FullString = document.forms[0].english.value
var pattern = /\bmy house\b/ig
var NewString = FullString.replace(pattern, wordArray[1]);
document.forms[0].english.value = NewString

var FullString = document.forms[0].english.value
var pattern = /\btonight\b/ig
var NewString = FullString.replace(pattern, wordArray[2]);
document.forms[0].english.value = NewString

var FullString = document.forms[0].english.value
var pattern = /\bbus\b/ig
var NewString = FullString.replace(pattern, wordArray[3]);
document.forms[0].english.value = NewString

var FullString = document.forms[0].english.value
var pattern = /\bfood\b/ig
var NewString = FullString.replace(pattern, wordArray[4]);
document.forms[0].english.value = NewString

var FullString = document.forms[0].english.value
var pattern = /\bbike\b/ig
var NewString = FullString.replace(pattern, wordArray[5]);
document.forms[0].english.value = NewString

var FullString = document.forms[0].english.value
var pattern = /\benemies\b/ig
var NewString = FullString.replace(pattern, wordArray[6]);
document.forms[0].english.value = NewString

var FullString = document.forms[0].english.value
var pattern = /\bschool\b/ig
var NewString = FullString.replace(pattern, wordArray[7]);
document.forms[0].english.value = NewString

var FullString = document.forms[0].english.value
var pattern = /\bcar\b/ig
var NewString = FullString.replace(pattern, wordArray[8]);
document.forms[0].english.value = NewString

var FullString = document.forms[0].english.value
var pattern = /\btommorrow\b/ig
var NewString = FullString.replace(pattern, wordArray[9]);
document.forms[0].english.value = NewString

var FullString = document.forms[0].english.value
var pattern = /\bparents\b/ig
var NewString = FullString.replace(pattern, wordArray[10]);
document.forms[0].english.value = NewString

var FullString = document.forms[0].english.value
var pattern = /\bfriends\b/ig
var NewString = FullString.replace(pattern, wordArray[11]);
document.forms[0].english.value = NewString

alert(NewString)

}

</script>

AND THE FORM IS SIMPLY: (table formatting take out for clarity)

<form name="form1">
<input name="Word0" type="text" class="textfields" id="Word0" size="25" maxlength="18">

<input name="Word1" type="text" class="textfields" id="Word1" size="25" maxlength="18">
<input name="Word2" type="text" class="textfields" id="Word2" size="25" maxlength="18">
<input name="Word3" type="text" class="textfields" id="Word3" size="25" maxlength="18">
<input name="Word4" type="text" class="textfields" id="Word4" size="25" maxlength="18">
<input name="Word5" type="text" class="textfields" id="Word5" size="25" maxlength="18">>>
<input name="Word6" type="text" class="textfields" id="Word6" size="25" maxlength="18">
<input name="Word7" type="text" class="textfields" id="Word7" size="25" maxlength="18">
<input name="Word8" type="text" class="textfields" id="Word8" size="25" maxlength="18">
<input name="Word9" type="text" class="textfields" id="Word9" size="25" maxlength="18">
<input name="Word10" type="text" class="textfields" id="Word10" size="25" maxlength="18">
<input name="Word11" type="text" class="textfields" id="Word11" size="25" maxlength="18">


<textarea name="english" cols="60" rows="4" id="english"> </textarea>

<input type="button" name="convert" class="buttons" value="PRESS TO CONVERT INTO YOUR LANGUAGE" onClick="fillArr()">

</form>

Thanks once again for your advice, I will get this working with more elegant code, when I have the time. I just provide the solution I used here in case anyone else ever has the same problem.

Regards

Kimara

Jona
05-07-2003, 11:04 AM
You should, though, put in some code to make the first word of every sentence capitalized. That way it is actually "proper" grammar--at least on your end. :)