Issues with Javascript Replace |
Issues with Javascript Replace |
kspn |
Apr 27 2009, 01:00 AM
Post
#1
|
Group: Members Posts: 3 Joined: 27-April 09 Member No.: 8,448 |
Hi,
I am trying to get the values form a Textarea, replace any returns with '. ' and also ensure that there are no duplicates (ie) '.. ' or '. . ' So far I am having weird results. CODE ProductOI = document.getElementById('ProductOI').value; ProductOI = ProductOI.replace(/\n/g, '\. '); ProductOI = ProductOI.replace(/\.\. /g, '\. '); ProductOI = ProductOI.replace(/\. \. /g, '\. '); The 'NewLine' code is working but the other two for some reason are not working as I am expecting them too. Each line of code run independently seems to work as expected, but when combined it fails. Any assistance would be appreciated. |
kspn |
Apr 27 2009, 01:55 AM
Post
#2
|
Group: Members Posts: 3 Joined: 27-April 09 Member No.: 8,448 |
Solved!!
Windows was adding \r to it as well, so the following code works. CODE ProductOI = ProductOI.replace(/\n/g, '\. ') ProductOI = ProductOI.replace(/\r/g, '') ProductOI = ProductOI.replace(/\.\. /g, '\. ') ProductOI = ProductOI.replace(/\. \. /g, '\. ') |
Christian J |
Apr 27 2009, 08:27 AM
Post
#3
|
. Group: WDG Moderators Posts: 9,656 Joined: 10-August 06 Member No.: 7 |
Multiple newlines like the following:
CODE <textarea>a b</textarea> seem to result in something like "a. . b". Also, IIRC Mac OS use only \r for newlines, so the script above would not produce any period signs then. |
Christian J |
Apr 27 2009, 01:12 PM
Post
#4
|
. Group: WDG Moderators Posts: 9,656 Joined: 10-August 06 Member No.: 7 |
Also, IIRC Mac OS use only \r for newlines, so the script above would not produce any period signs then. According to http://en.wikipedia.org/wiki/Newline#Representations CR (which corresponds with \r) was used by "Commodore machines, Apple II family, Mac OS up to version 9 and OS-9". |
kspn |
Apr 27 2009, 08:39 PM
Post
#5
|
Group: Members Posts: 3 Joined: 27-April 09 Member No.: 8,448 |
Also, IIRC Mac OS use only \r for newlines, so the script above would not produce any period signs then. According to http://en.wikipedia.org/wiki/Newline#Representations CR (which corresponds with \r) was used by "Commodore machines, Apple II family, Mac OS up to version 9 and OS-9". I have updated the code to the following and it appears to work as I am expecting. CODE //Replace NewLine/Line Feed with '. ' ProductOI = ProductOI.replace(/\n\r/g, '\. ') //Replace NewLines with '. ' ProductOI = ProductOI.replace(/\n/g, '\. ') //Remove Line Feed with '. ' ProductOI = ProductOI.replace(/\r/g, '\. ') //Replace '.. ' with '. ' ProductOI = ProductOI.replace(/\.\. /g, '\. ') //Replace '. . ' with '. ' ProductOI = ProductOI.replace(/\. \. /g, '\. ') |
Christian J |
Apr 28 2009, 05:02 AM
Post
#6
|
. Group: WDG Moderators Posts: 9,656 Joined: 10-August 06 Member No.: 7 |
I'm not good at regex, but I think this:
QUOTE CODE ProductOI = ProductOI.replace(/\n\r/g, '\. ') should be the other way around to catch Windows CR+LF, like this: CODE ProductOI = ProductOI.replace(/\r\n/g, '\. '); Also, these don't remove all occurences: QUOTE CODE //Replace '.. ' with '. ' ProductOI = ProductOI.replace(/\.\. /g, '\. ') //Replace '. . ' with '. ' ProductOI = ProductOI.replace(/\. \. /g, '\. ') (is it because each additional pair will be reduced to an additional single, not one in total?). See if these work better: CODE // One or more . is replaced with a single ProductOI = ProductOI.replace(/(\.)+/g, '\. '); ProductOI = ProductOI.replace(/(\. )+/g, '\. '); Still if the user inserts blank spaces between newlines it will prevent the removal of duplicates. Not sure how to remove spaces safely since the \s special character also catches newlines. I'm not sure if the escaping backslash is necessary when using quotes and/or parenthese, but it doesn't seem to harm anything either. Only tested on Windows. BTW if you're going to use this is public you may need to re-check at the server-side as well, in case users have disabled JS. |
Lo-Fi Version | Time is now: 26th April 2024 - 09:08 AM |