简体   繁体   中英

How remove email-address from string?

So, I have a string and I want to remove the e-mail adress from it if there is one.

As example:

This is some text and it continues like this
until sometimes an email adress shows up asd@asd.com

also some more text here and here.

I want this as a result.

This is some text and it continues like this
until sometimes an email adress shows up [email_removed]

also some more text here and here.

cleanFromEmail(string)
{
    newWordString = 
    space := a_space
    Needle = @
    wordArray := StrSplit(string, [" ", "`n"])
    Loop % wordArray.MaxIndex()
    {

        thisWord := wordArray[A_Index]


        IfInString, thisWord, %Needle%
        {
            newWordString = %newWordString%%space%(email_removed)%space%
        }
        else
        {
            newWordString = %newWordString%%space%%thisWord%%space%
            ;msgbox asd
        }
    }

    return newWordString
}

The problem with this is that I end up loosing all the line-breaks and only get spaces. How can I rebuild the string to look just like it did before removing the email-adress?

That looks rather complicated, why not use RegExReplace instead?

string =
(
This is some text and it continues like this
until sometimes an email adress shows up asd@asd.com

also some more text here and here.
)

newWordString := RegExReplace(string, "\S+@\S+(?:\.\S+)+", "[email_removed]")

MsgBox, % newWordString

Feel free to make the pattern as simple or as complicated as you want, depending on your needs, but RegExReplace should do it.

If for some reason RegExReplace doesn't always work for you, you can try this:

text =
(
This is some text and it continues like this
until sometimes an email adress shows up asd@asd.com.

also some more text here and here.
)

MsgBox, % cleanFromEmail(text)

cleanFromEmail(string){
    lineArray := StrSplit(string, "`n")
    Loop % lineArray.MaxIndex()
    {
        newLine := ""
        newWord := ""
        thisLine := lineArray[A_Index]
        If InStr(thisLine, "@")
        {
            wordArray := StrSplit(thisLine, " ")
            Loop % wordArray.MaxIndex()
            {
                thisWord := wordArray[A_Index]
                {
                    If InStr(thisWord, "@")
                    {
                        end := SubStr(thisWord, 0)
                        If end in ,,,.,;,?,!
                            newWord := "[email_removed]" end ""
                        else
                            newWord := "[email_removed]"
                    }
                    else
                        newWord := thisWord
                }
                newLine .= newWord . " " ; concatenate the outputs by adding a space to each one
            }
            newLine :=  trim(newLine) ; remove the last space from this variable
        }
        else
            newLine := thisLine
        newString .= newLine . "`n"
    }
    newString := trim(newString)
    return newString
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM