b3ta.com board
You are not logged in. Login or Signup
Home » Messageboard » XXX » Message 8302283 (Thread)

# I'm a coder by trade (if i had a job)
but I'm rather out of practice. Fire away and I'll see what I can do.
(, Sun 20 Apr 2008, 5:42, archived)
#
trade profession
..
.
..
nah, you're right
(, Sun 20 Apr 2008, 5:44, archived)
# Since when were programmers professional?!
(, Sun 20 Apr 2008, 5:45, archived)
# Enjoy winding up my Doctor/Dentist achieving cousins
When I get paid more than them.*



* not very often!
(, Sun 20 Apr 2008, 5:49, archived)
# Once i get a job
shit will go fine, because frankly i'm fucking amazing, but i'm a little lazy...
(, Sun 20 Apr 2008, 5:51, archived)
# All progress comes from laziness
otherwise we would still be hunter gathering and not have invented the wheel.

And I love my wheels!

/Stephen Hawking blog
(, Sun 20 Apr 2008, 6:09, archived)
# Thanks jmaxi and SFN
All I need to do is replace a period with a period and a space("." with ". "), but ONLY if the initial period is followed by any non-whitespace character other than another period. So:
"Yes.No" would become "Yes. No"
"Yes...No" would become "Yes... No"
"Yes. No" would not be changed.
(, Sun 20 Apr 2008, 5:49, archived)
# PHP and Javascript
Do a whole string replace (or several)
(, Sun 20 Apr 2008, 5:51, archived)
# or replace "." with ". "
then replace " "(two spaces) with " "(one)
(, Sun 20 Apr 2008, 5:52, archived)
# That'd work
unless of course you want to be able to have double spaces elsewhere, then you're fucked
(, Sun 20 Apr 2008, 5:54, archived)
# Exactly.
I need to be able to leave the text pretty much untouched, because that will matter to the people entering it. But I can't allow single periods in the middle of lines of text, it's too risky in terms of form security in the context it will be used.
(, Sun 20 Apr 2008, 5:58, archived)
# Anyone who uses double spaces deserves everything that happens to them -
Tried posting multiple spaces here?
(, Sun 20 Apr 2008, 6:00, archived)
# Er
Y                 es
(, Sun 20 Apr 2008, 6:19, archived)
# Just me then
THERE MUST BE MORE TO LIFE.
(, Sun 20 Apr 2008, 6:25, archived)
# That will put a space between each period in an elipse.
So ... would become . . .
Also, I don't want to run replace twice on the string when I can (hopefully) write a regex that will do the job in one pass. I know it's possible, I just haven't been able to get it right.
(, Sun 20 Apr 2008, 5:55, archived)
# in emergency then replace ". ." with ".."
repeat a few times
(, Sun 20 Apr 2008, 6:03, archived)
# I think the point is he knows he could do this
but is trying to just figure an expression that will handle it in a single pass rather than multiple
(, Sun 20 Apr 2008, 6:04, archived)
# Yeah
I'm using them already on the string previous to this, but I need the very specific replacement routine I've outlined above.
(, Sun 20 Apr 2008, 5:53, archived)
# surely something along the lines of
find .
read next char
if not space
replace with space + char

or

find .
read next char
if not space
insert space in string at relevant point (the position of which you should be able to drag from your loopish searchy algodoodah)
(, Sun 20 Apr 2008, 5:57, archived)
# Yeah, precisely.
And the most efficient way to do that is with JavaScript's replace function and a smart regular expression.
I got very close, I guess I'll just have to persevere until I get the last part right.
(, Sun 20 Apr 2008, 6:00, archived)
# Unless this gets figured out it will keep bothering me now.
Damn my being out of practice. Any chance you could post what you have, I might be able to adapt it a little
(, Sun 20 Apr 2008, 6:02, archived)
# Wait, I'll look back and find the best routine I had.
(, Sun 20 Apr 2008, 6:03, archived)
# Ok
newString = oldString.replace(/\.+[^\.\s]/g, ". ");
Here's the result of this:

"Yes no.Yes no. Yes no. Yes no..."
becomes
"Yes no. es no. Yes no. Yes no..."

It's doing everything I need (which is to say, it's not adding spaces where it shouldn't), with the exception that it replaces the Y after the period.
(, Sun 20 Apr 2008, 6:11, archived)
# That's a bit odd
*thinking*
(, Sun 20 Apr 2008, 6:23, archived)
# Just because it's been so long since i doned anything like this i'm interested to see if I'm right, here it is again
newString = oldString.replace(/\.(?!\.|\s)/g, ". ");
(, Sun 20 Apr 2008, 6:46, archived)
# Oooh you beauty :)
Fucking yeah, that's perfect.
I'll study what you've done and see if I can figure out how it works. I may be able to make some of the earlier string operations more efficient now too.
Thanks man, I owe you one.

Edit: lookahead! Who knew?
(, Sun 20 Apr 2008, 6:56, archived)
# Here's the link i ultimately ended up at:
www.regular-expressions.info/lookaround.html#lookahead

Keep in mind that javascript doesnt support Lookbehind though, only Lookahead.
(, Sun 20 Apr 2008, 6:59, archived)
# Have you tried turning it off and then on again?
/coat

(, Sun 20 Apr 2008, 6:04, archived)
# Morning, sirree!
Up early. Is your sleeping not as well as it should be?
(, Sun 20 Apr 2008, 6:20, archived)
# I got six hours, mustn't grumble
mustn't grumble\\0/

(, Sun 20 Apr 2008, 6:30, archived)
# I'm glad.
You're not down for the London bash are you?
(, Sun 20 Apr 2008, 6:34, archived)
# no, 'fraid not
'fraid not
(, Sun 20 Apr 2008, 7:06, archived)
# Haha
I didn't see you hiding here :)
How are you sir?
(, Sun 20 Apr 2008, 6:21, archived)
# Braw!, thanks!
thanks!you well apart from all this jibber jabber?

(, Sun 20 Apr 2008, 6:30, archived)
# I'm great thanks!)
All this jibber jabber is actually fun to be honest, as long as it gets sorted in the end :)
(, Sun 20 Apr 2008, 6:38, archived)
# Hard way
split the string on "." (there is a Jscript command to do this - can't remember it tho) and check the left char of string 2, then re-assemble string (sucker) Re-iterate for other instances if any.

Sure you'll get away with previous tho!

God I'm such a nerd!

Good luck.
(, Sun 20 Apr 2008, 5:59, archived)
# Concatination is the least efficient string method.
The sequence you've described here would just be too inefficient in the context.
(, Sun 20 Apr 2008, 6:03, archived)
# 'aint life a bitch!
I tried... was never a perfectionist tho.
(, Sun 20 Apr 2008, 6:11, archived)
# I appreciate it :)
(, Sun 20 Apr 2008, 6:21, archived)
# you should ask sprinkles. thats what i do.
he's on msn. but. if he is awake or not...
(, Sun 20 Apr 2008, 6:14, archived)
# This works in perl
$string=~s/(\.+)([^\s])/$1 $2/;
rephrasing your question as "replace one or more periods with the same number of periods and a space if the next character is not whitespace"
(, Sun 20 Apr 2008, 6:19, archived)
# Ooh
that looks promising, thanks! And your rephrasing is much clearer, that's indeed exactly what I need.
But... the ~s at the beginning is unfamiliar. What does it do? It's possible it's used in JavaScript, but it may not be, not all of Perl's reg ex syntax is included.

Edit: Ok, I've tried this without the leading ~s and I'm getting an unhelpful javascript error... I think the problem is the repeated / near the end of the reg ex here... javascript uses / as the reg ex delimiter.
(, Sun 20 Apr 2008, 6:24, archived)
# Take it all back - I'm not a nerd after all!
Good luck and have fun.
(, Sun 20 Apr 2008, 6:28, archived)
# .
~s/ is just the replace operator. For example ~s/old/new/ replaces 'old' with 'new'.
Perl has these auto variables $1, $2 etc that correspond to brackets () you put in the reg exp. I guess what's missing in your code above is the $2. that's what's removing your Y.
(, Sun 20 Apr 2008, 6:30, archived)
# Ok, thanks
I really appreciate your help.
I don't know if I can adapt the code sample you've given me, but the rephrasing is really helpful, I'm much clearer now about what I need to achieve.
Thanks!
(, Sun 20 Apr 2008, 6:35, archived)
# *points below*
(, Sun 20 Apr 2008, 6:38, archived)
# yeah. i came up with (on my own)
newString = oldString.replace(/\.(?!\.|\s)/g, ". ");
seems to work. English goes: Replace a "." which is not followed by a "." or a " "

but you know. i'm no expert.
(, Sun 20 Apr 2008, 6:41, archived)
# Ahhh, i see, you used the (? ) lookahead option
which checks following characters without operating on them, very clever, why didnt I think of that.
COUGH
(, Sun 20 Apr 2008, 6:43, archived)
# glad to be of assistance
you are mofaha after all!
(, Sun 20 Apr 2008, 6:53, archived)
# Love your sig
but I'm sure the question will resolve it's self in time.

just make sure you go before the journey
(, Sun 20 Apr 2008, 6:40, archived)
# why thank you sir!
as you say, the question did resolve itself many times before. IN MY PANTS.
(, Sun 20 Apr 2008, 6:49, archived)
# I came up with
newString = oldString.replace(/\.(?!\.|\s)/g, ". ");
seems to work. English goes: Replace a "." which is not followed by a "." or a " "
(, Sun 20 Apr 2008, 6:38, archived)
# ? operator
something i don't know about. looks like problem solved then
(, Sun 20 Apr 2008, 6:46, archived)
# (? ) is lookahead apparently, checks the following character without performing a function on it
I'd be lost without google if i'm honest though.
(, Sun 20 Apr 2008, 6:49, archived)
# ? is superawesome
i shall start using it?
(, Sun 20 Apr 2008, 6:56, archived)