如何删除字符串中可能出现的子字符串?

时间:2019-05-20 15:19:13

标签: ruby-on-rails ruby

对于某些报告,我需要简化url字符串,有时我们的url字符串在不同部分包含gclid参数:

https://www.website.com/colors/blue?src=camp_id1&gclid=Cj0KCQjwoInnBRDDARIsANBVyASfVUCg4ShKaAq4q8cX6xgB4kYj-oRGEPuO5UuUaAnZi2zD7yQU684aAo3KEALw_wcB

https://www.website.com/colors/blue?gclid=Cj0KCQjwoInnBRDDARIsANBVyASfVUCg4ShKaAq4q8cX6xgB4kYj-oRGEPuO5UuUaAnZi2zD7yQU684aAo3KEALw_wcB&src=camp_id1

https://www.website.com/colors/blue?page=2&gclid=Cj0KCQjwoInnBRDDARIsANBVyASfVUCg4ShKaAq4q8cX6xgB4kYj-oRGEPuO5UuUaAnZi2zD7yQU684aAo3KEALw_wcB&src=camp_id1

https://www.website.com/colors/blue?page=2&src=camp_id1

因此,URL有所有这些变体。有时它们包含gclid,有时则不包含。它们通常位于网址的不同部分。

在ruby中最简单的方法是在没有gclid子字符串的情况下打印字符串吗?

3 个答案:

答案 0 :(得分:3)

IAuthenticatedEncryptor encryptorByKeyId = currentKeyRing.GetAuthenticatedEncryptorByKeyId(guid, out isRevoked);
if (encryptorByKeyId == null)
{
    this._logger.KeyWasNotFoundInTheKeyRingUnprotectOperationCannotProceed(guid);
    throw Error.Common_KeyNotFound(guid);
}

答案 1 :(得分:1)

如果您只需要基本URL,就可以这样做:

url = your_url_string
trimmed_url = url[0, url.index("?")]

或者您可以防止没有查询参数的字符串:

url = your_url_string
trimmed_url = url[0, (url.include?('?') ? url.index("?") : url)]

也许也可以使用URI来完成此操作...

如果您需要做的就是删除该参数,请参见以下答案:Rails String Replace URL Parameters

答案 2 :(得分:1)

我建议为此使用URI库,以便您可以解析查询部分:

array([[0.67058825, 0.6901961 , 0.69411767, ..., 0.61960787, 0.6       ,
        0.60784316],
             ...,
       [0.03529412, 0.03529412, 0.04705882, ..., 0.10196079, 0.09019608,
        0.08627451],
            [0.03137255, 0.02745098, 0.03921569, ..., 0.12156863, 0.08627451,
        0.06666667]], dtype=float32)