Snippet Add/Remove Delimiters To/From String

Nestharus

o-o
Reaction score
84
JASS:

library AddRepeatedString
    //adds a string to another string in spaced intervals
    //call AddRepeatedString(1234567,"-",3,0) -> 123-456-7
    function AddRepeatedString takes string s, string str, integer spacing, integer start returns string
        local integer i = StringLength(s)
        local integer p = 1
        loop
            exitwhen p*spacing+start>=i
            set s = SubString(s,0,p*spacing+p+start-1)+str+SubString(s,p*spacing+p+start-1,StringLength(s))
            set p=p+1
        endloop
        return s
    endfunction
endlibrary


JASS:

library RemoveString
    //removes all traces of a string from another string
    //0 means remove all
    //call RemoveString("123123","12",0,0) -> 33
    //call RemoveString("123-123","-",0,0) -> 123123
    
    //maxRemove is useful for removing an instance of a string once
    //call RemoveString("-load mau3-load -ffff","-load ",1,0) -> "mau3-load -ffff"
    function RemoveString takes string s, string str, integer maxRemove, integer start returns string
        local integer p = StringLength(str)
        local integer i = StringLength(s)
        local integer m = start
        if (0<i) then
            if (0==maxRemove) then
                set maxRemove=-1
            endif
            loop
                exitwhen m==i or 0==maxRemove
                if (str==SubString(s,m,m+p)) then
                    set maxRemove = maxRemove - 1
                    set s=SubString(s,0,m)+SubString(s,m+p,StringLength(s))
                    set i=i-1
                else
                    set m=m+1
                endif
            endloop
        endif
        return s
    endfunction
endlibrary


JASS:

call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,60,"|"+RemoveString("-load mau3-load -ffff","-load ",1,0)+"|")
call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,60,"|"+RemoveString("-123-456-","-",0,0)+"|")
call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,60,AddRepeatedString("123456712345671234567","-",4,0))
 
I suppose so. Really, it should be add repeated string and remove string, and they should be two separate resources. I just put them together and named them how I did with save/load in mind =).


Why I say string instead of char is because you can just as easily pass in a string ; P. One good example would be passing in "-load" for removing it from the save/load code and passing in " " for removing any spaces (not including in -load as there may be multiple spaces after load). From there you can pass in the delimiter "-" to remove those.


Is there already a script that removes strings like this and adds repeated strings?
 
I suppose so. Really, it should be add repeated string and remove string, and they should be two separate resources. I just put them together and named them how I did with save/load in mind =).

I think it would be a good idea to group a lot of save/load code string functions together for a library. Possibly to even generalize it to functions that display readable strings to an actual player. As a mapper, I would hardly find it useful to look for it as a resource (in its current state), and I may simply decide to write my own.

Why I say string instead of char is because you can just as easily pass in a string ; P.

Ah, I thought I glanced at the code and thought I saw something that indicated a limitation to characters.

Is there already a script that removes strings like this and adds repeated strings?

My stringFilter's ReplaceString function was originally a RemoveChar/RemoveString function. It has some added functionality with little to no loss in efficiency. Romek's Explode String function was also intended for splitting delimited strings. Neither has a delimiting function.
 
Ah, no max remove argument ; P.


max remove is hella useful for things like this = )
[ljass]call RemoveString("-load abcd-load -efgh","load -",1)[/ljass]

That'll remove only the "-load " at the front ;D.
 
Please read the submission rules.

Graveyarded.
 
This should go from right to left in order to support numeric separations:
AddRepeatedString(6004153,"-",3,0) -> 6,004,153
 
Dirac:
1.This should go from right to left in order to support numeric separations:
AddRepeatedString(6004153,"-",3,0) -> 6,004,153

Nestharus:
1.don't use this for numeric commas >.>, use this instead

http://www.hiveworkshop.com/forums/1875400-post370.html


1. Guys actually the thousands separator should be a space " " not a comma "," nor a dot ".".
The dot should be used as a decimal mark.

So:
1,234 -> 1 234
1,234,567,890 -> 1 234 567 890
1,234.567890 -> 1 234.567 890 or
1,234.567,890 -> 1 234.567 890
3,14159 -> ~PI -> 3.14159

This is SI style.

And btw I think the multiplication in mathematics when not used implicitly as in (4x) should use the programming equivalent "*" and save the dot "." for the decimal mark and the middle dot (a "." pushed a little but up) for lets say the dot product of 2 vectors.
 
I prefer commas >.>.


I've never even seen the SI style until you mentioned it. Who knows, maybe the US is weird, but I haven't seen it in international games either, so...
 
The English way is to use 6,859.6923490.

In Germany you use 6.859,6923490 which really f*cks my mind I must say.

For this S.I. format, I have never heard of it.
 
General chit-chat
Help Users
  • No one is chatting at the moment.
  • The Helper The Helper:
    It is weird seeing a way more realistic users online number
  • The Helper The Helper:
    Happy Tuesday Night!
    +1
  • V-SNES V-SNES:
    Happy Friday!
    +1
  • The Helper The Helper:
    News portal has been retired. Main page of site goes to Headline News forum now
  • The Helper The Helper:
    I am working on getting access to the old news portal under a different URL for those that would rather use that for news before we get a different news view.
  • Ghan Ghan:
    Easily done
    +1
  • The Helper The Helper:
    https://www.thehelper.net/pages/news/ is a link to the old news portal - i will integrate it into the interface somewhere when i figure it out
  • Ghan Ghan:
    Need to try something
  • Ghan Ghan:
    Hopefully this won't cause problems.
  • Ghan Ghan:
    Hmm
  • Ghan Ghan:
    I have converted the Headline News forum to an Article type forum. It will now show the top 20 threads with more detail of each thread.
  • Ghan Ghan:
    See how we like that.
  • The Helper The Helper:
    I do not see a way to go past the 1st page of posts on the forum though
  • The Helper The Helper:
    It is OK though for the main page to open up on the forum in the view it was before. As long as the portal has its own URL so it can be viewed that way I do want to try it as a regular forum view for a while
  • Ghan Ghan:
    Yeah I'm not sure what the deal is with the pagination.
  • Ghan Ghan:
    It SHOULD be there so I think it might just be an artifact of having an older style.
  • Ghan Ghan:
    I switched it to a "Standard" article forum. This will show the thread list like normal, but the threads themselves will have the first post set up above the rest of the "comments"
  • The Helper The Helper:
    I don't really get that article forum but I think it is because I have never really seen it used on a multi post thread
  • Ghan Ghan:
    RpNation makes more use of it right now as an example: https://www.rpnation.com/news/
  • The Helper The Helper:

      The Helper Discord

      Members online

      No members online now.

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top