add/remove space after periods...

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Joseph

    add/remove space after periods...

    I have a textBox that people writes stories in it. They can use [bbcode]
    [/bbcode] for format.

    I have Aspell installed on the server, so people can make correction to
    their text. Sometimes, they forget to add a space after a period. So Aspell
    reads the last word of a sentence and the first word of the next sentence as
    a single world, which gives an error, word not found.

    Before sending the text to Aspell, i add a space after all the periods with:

    string = string.replace(/./g, ". ");

    I did this for the coma, and it's working, no problem.

    But i dont want to add a space after periods in certain [bbcode] [/bbcode].
    Because the links will not work.

    [link]http://www.tromal.net/index3.php[/link]


    I dont know how to do it, but after i added a space to all periods, i could
    search for "http" and remove all the space after the periods till the next
    "[".

    Or the space could only be added when the period is not between
    [link][/link] and [img][/img]

    Could someone help me on this one, thanks,

    André Couturier



  • RobB

    #2
    Re: add/remove space after periods...

    Joseph wrote:[color=blue]
    > I have a textBox that people writes stories in it. They can use[/color]
    [bbcode][color=blue]
    > [/bbcode] for format.
    >
    > I have Aspell installed on the server, so people can make correction[/color]
    to[color=blue]
    > their text. Sometimes, they forget to add a space after a period. So[/color]
    Aspell[color=blue]
    > reads the last word of a sentence and the first word of the next[/color]
    sentence as[color=blue]
    > a single world, which gives an error, word not found.
    >
    > Before sending the text to Aspell, i add a space after all the[/color]
    periods with:[color=blue]
    >
    > string = string.replace(/./g, ". ");
    >
    > I did this for the coma, and it's working, no problem.
    >
    > But i dont want to add a space after periods in certain [bbcode][/color]
    [/bbcode].[color=blue]
    > Because the links will not work.
    >
    > [link]http://www.tromal.net/index3.php[/link]
    >
    >
    > I dont know how to do it, but after i added a space to all periods, i[/color]
    could[color=blue]
    > search for "http" and remove all the space after the periods till the[/color]
    next[color=blue]
    > "[".
    >
    > Or the space could only be added when the period is not between
    > [link][/link] and [img][/img]
    >
    > Could someone help me on this one, thanks,
    >
    > André Couturier
    > www.tromal.net[/color]


    Not really enough time to test this, but...

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
    "http://www.w3.org/TR/html4/strict.dtd">
    <html>
    <head>
    <title>untitled </title>
    </head>
    <body>
    <pre>
    <script type="text/javascript">
    //<![CDATA[

    String.prototyp e.couturierFix = function()
    {
    var fixer = /([.,])/g;
    var refixer = /\. (?=[^\[]*\[\/(link|img)\])/gi;
    return this.replace(fi xer, '$1 ').replace(refi xer, '.');
    }

    var s = [

    'Lorem ipsum dolor sit amet,consectetu r adipisicing elit,' ,
    'sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.' ,
    'Ut enim ad minim veniam,quis nostrud exercitation ullamco laboris ' ,
    'nisi ut aliquip ex ea commodo consequat.Duis aute irure dolor in ' ,
    'reprehenderit in voluptate velit esse cillum dolore eu fugiat ' ,
    'nulla pariatur. Excepteur sint occaecat cupidatat non proident,' ,
    'sunt in culpa qui officia deserunt mollit anim id est laborum.' ,
    '[link]http://www.tromal.net/index3.php[/link]' ,
    ''

    ];

    s = s.join('\n');
    document.write( s.couturierFix( ));

    //]]>
    </script>
    </pre>
    </body>
    </html>

    [could write it as stand-alone routine too]

    Comment

    • RobB

      #3
      Re: add/remove space after periods...

      Typo: change to

      var fixer = /([.,])[\S]/g;

      Thanks.

      Comment

      • RobB

        #4
        Re: add/remove space after periods...

        Joseph wrote:[color=blue]
        > I have a textBox that people writes stories in it. They can use[/color]
        [bbcode][color=blue]
        > [/bbcode] for format.
        >
        > I have Aspell installed on the server, so people can make correction[/color]
        to[color=blue]
        > their text. Sometimes, they forget to add a space after a period. So[/color]
        Aspell[color=blue]
        > reads the last word of a sentence and the first word of the next[/color]
        sentence as[color=blue]
        > a single world, which gives an error, word not found.
        >
        > Before sending the text to Aspell, i add a space after all the[/color]
        periods with:[color=blue]
        >
        > string = string.replace(/./g, ". ");
        >
        > I did this for the coma, and it's working, no problem.
        >
        > But i dont want to add a space after periods in certain [bbcode][/color]
        [/bbcode].[color=blue]
        > Because the links will not work.
        >
        > [link]http://www.tromal.net/index3.php[/link]
        >
        >
        > I dont know how to do it, but after i added a space to all periods, i[/color]
        could[color=blue]
        > search for "http" and remove all the space after the periods till the[/color]
        next[color=blue]
        > "[".
        >
        > Or the space could only be added when the period is not between
        > [link][/link] and [img][/img]
        >
        > Could someone help me on this one, thanks,
        >
        > André Couturier
        > www.tromal.net[/color]

        This just in....

        String.prototyp e.couturierFix = function()
        {
        var fixer = /([.,])([\S])/g;
        var refixer = /\. (?=[^\[]*\[\/(link|img)\])/gi;
        return this.replace(fi xer, '$1 $2').replace(re fixer, '.');
        }

        Use like any other string method:
        textBoxRef.valu e = textBoxRef.valu e.couturierFix( );

        Comment

        • RobB

          #5
          Re: add/remove space after periods...

          Joseph wrote:[color=blue]
          > I have a textBox that people writes stories in it. They can use[/color]
          [bbcode][color=blue]
          > [/bbcode] for format.
          >
          > I have Aspell installed on the server, so people can make correction[/color]
          to[color=blue]
          > their text. Sometimes, they forget to add a space after a period. So[/color]
          Aspell[color=blue]
          > reads the last word of a sentence and the first word of the next[/color]
          sentence as[color=blue]
          > a single world, which gives an error, word not found.
          >
          > Before sending the text to Aspell, i add a space after all the[/color]
          periods with:[color=blue]
          >
          > string = string.replace(/./g, ". ");
          >
          > I did this for the coma, and it's working, no problem.
          >
          > But i dont want to add a space after periods in certain [bbcode][/color]
          [/bbcode].[color=blue]
          > Because the links will not work.
          >
          > [link]http://www.tromal.net/index3.php[/link]
          >
          >
          > I dont know how to do it, but after i added a space to all periods, i[/color]
          could[color=blue]
          > search for "http" and remove all the space after the periods till the[/color]
          next[color=blue]
          > "[".
          >
          > Or the space could only be added when the period is not between
          > [link][/link] and [img][/img]
          >
          > Could someone help me on this one, thanks,
          >
          > André Couturier
          > www.tromal.net[/color]

          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
          "http://www.w3.org/TR/html4/strict.dtd">
          <html>
          <head>
          <title>untitled </title>
          </head>
          <body style="width:57 8px;margin:100p x auto;font:9pt
          verdana;text-align:justify;b ackground:#eef; ">
          <script type="text/javascript">
          //<![CDATA[

          String.prototyp e.couturierFix = function()
          {
          return this.replace(/([.,])([\S])/g, '$1 $2').
          replace(/\. (?=[^[]*\[\/(link|img)\])/gi, '.');
          }

          var s = [

          'Lorem ipsum dolor sit amet,consectetu r adipisicing elit,' ,
          'sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.' ,
          'Ut enim ad minim veniam,quis nostrud exercitation ullamco laboris ' ,
          'nisi ut aliquip ex ea commodo consequat.Duis aute irure dolor in ' ,
          'reprehenderit in voluptate velit esse cillum dolore eu fugiat ' ,
          'nulla pariatur. Excepteur sint occaecat cupidatat non proident,' ,
          'sunt in culpa qui officia deserunt mollit anim id est laborum.' ,
          '<br /><br />[link]http://www.tromal.net/index3.php[/link]' ,
          '<br /><br /><br />'

          ];

          document.write(

          '|before|' ,
          '<br /><br />' ,
          (s = s.join('')) ,
          '<hr /><br />' ,
          '|after|<br /><br />' ,
          s.couturierFix( )

          );

          //]]>
          </script>
          </body>
          </html>

          Think that helps. Use like any other string method:
          textBoxRef.valu e = textBoxRef.valu e.couturierFix( );

          Comment

          • RobB

            #6
            Re: add/remove space after periods...

            Joseph wrote:[color=blue]
            > I have a textBox that people writes stories in it. They can use[/color]
            [bbcode][color=blue]
            > [/bbcode] for format.
            >
            > I have Aspell installed on the server, so people can make correction[/color]
            to[color=blue]
            > their text. Sometimes, they forget to add a space after a period. So[/color]
            Aspell[color=blue]
            > reads the last word of a sentence and the first word of the next[/color]
            sentence as[color=blue]
            > a single world, which gives an error, word not found.
            >
            > Before sending the text to Aspell, i add a space after all the[/color]
            periods with:[color=blue]
            >
            > string = string.replace(/./g, ". ");
            >
            > I did this for the coma, and it's working, no problem.
            >
            > But i dont want to add a space after periods in certain [bbcode][/color]
            [/bbcode].[color=blue]
            > Because the links will not work.
            >
            > [link]http://www.tromal.net/index3.php[/link]
            >
            >
            > I dont know how to do it, but after i added a space to all periods, i[/color]
            could[color=blue]
            > search for "http" and remove all the space after the periods till the[/color]
            next[color=blue]
            > "[".
            >
            > Or the space could only be added when the period is not between
            > [link][/link] and [img][/img]
            >
            > Could someone help me on this one, thanks,
            >
            > André Couturier
            > www.tromal.net[/color]

            <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
            "http://www.w3.org/TR/html4/strict.dtd">
            <html>
            <head>
            <title>untitled </title>
            </head>
            <body style="width:57 8px;margin:100p x auto;font:9pt
            verdana;text-align:justify;b ackground:#eef; ">
            <script type="text/javascript">
            //<![CDATA[

            String.prototyp e.couturierFix = function()
            {
            return this.replace(/([.,])([\S])/g, '$1 $2').
            replace(/\. (?=[^[]*\[\/(link|img)\])/gi, '.');
            }

            var s = [

            'Lorem ipsum dolor sit amet,consectetu r adipisicing elit,' ,
            'sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.' ,
            'Ut enim ad minim veniam,quis nostrud exercitation ullamco laboris ' ,
            'nisi ut aliquip ex ea commodo consequat.Duis aute irure dolor in ' ,
            'reprehenderit in voluptate velit esse cillum dolore eu fugiat ' ,
            'nulla pariatur. Excepteur sint occaecat cupidatat non proident,' ,
            'sunt in culpa qui officia deserunt mollit anim id est laborum.' ,
            '<br /><br />[link]http://www.tromal.net/index3.php[/link]' ,
            '<br /><br /><br />'

            ];

            document.write(

            '|before|' ,
            '<br /><br />' ,
            (s = s.join('')) ,
            '<hr /><br />' ,
            '|after|<br /><br />' ,
            s.couturierFix( )

            );

            //]]>
            </script>
            </body>
            </html>

            Think that helps. Use like any other string method:
            textBoxRef.valu e = textBoxRef.valu e.couturierFix( );

            Comment

            • Dr John Stockton

              #7
              Re: add/remove space after periods...

              JRS: In article <AN1xd.71407$3d 2.2195460@weber .videotron.net> , dated
              Sat, 18 Dec 2004 17:05:00, seen in news:comp.lang. javascript, Joseph
              <miom@moimiom.o rg> posted :
              [color=blue]
              >I have a textBox that people writes stories in it. They can use [bbcode]
              >[/bbcode] for format.
              >
              >I have Aspell installed on the server, so people can make correction to
              >their text. Sometimes, they forget to add a space after a period. So Aspell
              >reads the last word of a sentence and the first word of the next sentence as
              >a single world, which gives an error, word not found.
              >
              >Before sending the text to Aspell, i add a space after all the periods with:
              >
              >string = string.replace(/./g, ". ");
              >
              >I did this for the coma, and it's working, no problem.
              >
              >But i dont want to add a space after periods in certain [bbcode] [/bbcode].[/color]


              There are many other cases where a space should not be added.

              There are 3,5 miles to go;
              there is .5 mile to go;
              this is news:comp.lang. javascript;
              in Ascii, one must write "..." for an ellipsis;
              etc., etc.

              Space correcting is not programmable, except possibly by experts in
              computing and language. Make the writers get it right, or use a human
              editor.

              --
              © John Stockton, Surrey, UK. ?@merlyn.demon. co.uk Turnpike v4.00 IE 4 ©
              <URL:http://www.jibbering.c om/faq/> JL/RC: FAQ of news:comp.lang. javascript
              <URL:http://www.merlyn.demo n.co.uk/js-index.htm> jscr maths, dates, sources.
              <URL:http://www.merlyn.demo n.co.uk/> TP/BP/Delphi/jscr/&c, FAQ items, links.

              Comment

              • RobB

                #8
                Re: add/remove space after periods...

                Dr John Stockton wrote:

                (snip)
                [color=blue]
                > Space correcting is not programmable, except possibly by experts in
                > computing and language. Make the writers get it right, or use a[/color]
                human[color=blue]
                > editor.[/color]

                Doubtless so, but imperious nonetheless. Let them eat spaces.
                Work-in-progress, maybe useful to the OP:

                <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
                "http://www.w3.org/TR/html4/strict.dtd">
                <html>
                <head>
                <title>shoot me</title>
                <style type="text/css">

                body {
                font: normal 100% arial, sans-serif;
                background: #900;
                }
                #p1, #p2, #p3, #p4, #p5, #p6 {
                width: 340px;
                font: normal 70% arial, sans-serif;
                padding: 8px;
                margin: 0 auto;
                border: 1px #fff dashed;
                background: #faf0e0;
                }
                button {
                display: block;
                width: 100px;
                margin: 8px auto;
                }

                </style>
                <script type="text/javascript">
                //<![CDATA[

                String.prototyp e.couturierFix = function()
                {
                return this.replace(/(\D[.!?])(?=[^ .a-z\d])/g, '$1 ').
                replace(/,(?=[\S])/g, ', ').
                replace(/\. (?=[^[]*\[\/(link|img)\])/gi, '.');
                }

                function fixit()
                {
                var p, i = 1, fixed;
                while (p = document.getEle mentById('p' + i++))
                {
                fixed = p.firstChild.no deValue.couturi erFix();
                p.replaceChild( document.create TextNode(fixed) , p.firstChild);
                }
                return false;
                }

                //]]>
                </script>
                </head>
                <body>
                <p id="p1">&nbsp;
                When a girl leaves her home at eighteen,she does one of two
                things.Either she falls into saving hands and becomes better, or she
                rapidly assumes the cosmopolitan standard of virtue and becomes worse.
                Of an intermediate balance, under the circumstances, there is no
                possibility.The city has its cunning wiles,no less than the infinitely
                smaller and more human tempter. There are large forces which allure
                with all the soulfulness of expression possible in the most cultured
                human. The gleam of a thousand lights is often as effective as the
                persuasive light in a wooing and fascinating eye. Half the undoing of
                the unsophisticated and natural mind is accomplished by forces wholly
                superhuman. A blare of sound, a roar of life, a vast array of human
                hives,appeal to the astonished senses in equivocal terms. Without a
                counsellor at hand to whisper cautious interpretations ,what falsehoods
                may not these things breathe into the unguarded ear!Unrecognise d for
                what they are, their beauty, like music, too often relaxes,then
                weakens,then perverts the simpler human perceptions.
                </p>
                <p id="p2">
                Link test:
                </p>
                <p id="p3">
                Image test:
                </p>
                <p id="p4">
                Question mark test: fixes question marks?Hopefully ...
                </p>
                <p id="p5">
                Exclamation point test: Exclamation points!Yes/no?Maybe?
                </p>
                <p id="p6">
                Decimal / ellipsis test: there is .5 mile to go...correct?
                </p>
                <button onclick="return fixit()">fix it</button>
                <button onclick="locati on.reload()">re store</button>
                </body>
                </html>

                Comment

                • Joseph

                  #9
                  Re: add/remove space after periods...


                  "RobB" <ferndoc9@hotma il.com> wrote in message
                  news:1103486984 .083497.211410@ z14g2000cwz.goo glegroups.com.. .[color=blue]
                  > Dr John Stockton wrote:
                  >
                  > (snip)
                  >[color=green]
                  > > Space correcting is not programmable, except possibly by experts in
                  > > computing and language. Make the writers get it right, or use a[/color]
                  > human[color=green]
                  > > editor.[/color]
                  >
                  > Doubtless so, but imperious nonetheless. Let them eat spaces.
                  > Work-in-progress, maybe useful to the OP:
                  >
                  > <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
                  > "http://www.w3.org/TR/html4/strict.dtd">
                  > <html>
                  > <head>
                  > <title>shoot me</title>
                  > <style type="text/css">
                  >
                  > body {
                  > font: normal 100% arial, sans-serif;
                  > background: #900;
                  > }
                  > #p1, #p2, #p3, #p4, #p5, #p6 {
                  > width: 340px;
                  > font: normal 70% arial, sans-serif;
                  > padding: 8px;
                  > margin: 0 auto;
                  > border: 1px #fff dashed;
                  > background: #faf0e0;
                  > }
                  > button {
                  > display: block;
                  > width: 100px;
                  > margin: 8px auto;
                  > }
                  >
                  > </style>
                  > <script type="text/javascript">
                  > //<![CDATA[
                  >
                  > String.prototyp e.couturierFix = function()
                  > {
                  > return this.replace(/(\D[.!?])(?=[^ .a-z\d])/g, '$1 ').
                  > replace(/,(?=[\S])/g, ', ').
                  > replace(/\. (?=[^[]*\[\/(link|img)\])/gi, '.');
                  > }
                  >
                  > function fixit()
                  > {
                  > var p, i = 1, fixed;
                  > while (p = document.getEle mentById('p' + i++))
                  > {
                  > fixed = p.firstChild.no deValue.couturi erFix();
                  > p.replaceChild( document.create TextNode(fixed) , p.firstChild);
                  > }
                  > return false;
                  > }
                  >
                  > //]]>
                  > </script>
                  > </head>
                  > <body>
                  > <p id="p1">&nbsp;
                  > When a girl leaves her home at eighteen,she does one of two
                  > things.Either she falls into saving hands and becomes better, or she
                  > rapidly assumes the cosmopolitan standard of virtue and becomes worse.
                  > Of an intermediate balance, under the circumstances, there is no
                  > possibility.The city has its cunning wiles,no less than the infinitely
                  > smaller and more human tempter. There are large forces which allure
                  > with all the soulfulness of expression possible in the most cultured
                  > human. The gleam of a thousand lights is often as effective as the
                  > persuasive light in a wooing and fascinating eye. Half the undoing of
                  > the unsophisticated and natural mind is accomplished by forces wholly
                  > superhuman. A blare of sound, a roar of life, a vast array of human
                  > hives,appeal to the astonished senses in equivocal terms. Without a
                  > counsellor at hand to whisper cautious interpretations ,what falsehoods
                  > may not these things breathe into the unguarded ear!Unrecognise d for
                  > what they are, their beauty, like music, too often relaxes,then
                  > weakens,then perverts the simpler human perceptions.
                  > </p>
                  > <p id="p2">
                  > Link test:
                  > </p>
                  > <p id="p3">
                  > Image test:
                  > </p>
                  > <p id="p4">
                  > Question mark test: fixes question marks?Hopefully ...
                  > </p>
                  > <p id="p5">
                  > Exclamation point test: Exclamation points!Yes/no?Maybe?
                  > </p>
                  > <p id="p6">
                  > Decimal / ellipsis test: there is .5 mile to go...correct?
                  > </p>
                  > <button onclick="return fixit()">fix it</button>
                  > <button onclick="locati on.reload()">re store</button>
                  > </body>
                  > </html>
                  >[/color]

                  =============== =====
                  Your hot! Thank-you very much for the script. I dont understand it, but it
                  works great ! :o)

                  Here is the script that i use for formating and preventing abuse when people
                  writes stories:


                  string = document.formna me.story.value;

                  // check for banned words
                  var bannedWordArray = new Array(" pa ", " ki ", " ds "," ke "," g "," tro
                  "," fo "," kan "," tou "," lè "," tjrs "," koi "," kelke "," pe "," ya ","
                  dla "," po "," ns "," ù "," jvous "," keske ", " pr ", " moa ", " pk ", " mé
                  ", " mem ", " ossi ");
                  var bannedWordCount = 26;
                  for (i = 0; i <= bannedWordCount ; i++) {
                  var bannedWordDetec ted = string.indexOf( bannedWordArray[i]);
                  if (bannedWordDete cted != -1) { var messageError = 'banned words
                  detected';}
                  }

                  // remove repeating characters
                  string = stripToLong(str ing);

                  // format text for periods and commas
                  string = string.couturie rFix();

                  // remove double space
                  string = string.replace(/ /g, " ");

                  // remove space before commas
                  string = string.replace(/ ,/g, ",");
                  // end


                  // -------------- functions

                  // format text for period, comma
                  String.prototyp e.couturierFix = function() {
                  return this.replace(/(\D[.!?])(?=[^ .a-z\d])/g, '$1 ').
                  replace(/,(?=[\S])/g, ', ').
                  replace(/ \.(?=[\S])/g, '.').
                  replace(/\. (?=[^[]*\[\/(lien|image)\])/gi, '.');
                  }


                  // limit repeating characters
                  function stripToLong(str ing) {
                  var accumulator = new Array();
                  var current = "";
                  var count = 0;
                  for (i = 0;i < string.length; i++) {
                  var c = string.charAt(i );
                  if (c == current) {
                  count++;
                  } else {
                  count = 1;
                  current = c;
                  }
                  if (count <= 4) {
                  accumulator[i] = c;
                  }
                  }
                  return accumulator.joi n("");
                  }

                  -----------------

                  Thanks again,
                  André Couturier






                  Comment

                  Working...