0

例如,我有字符串:

<Url class="class">http://www.ccc.com/Files/thumbnails/Gone Dark.jpg</Url>

我想将 url 标记内的所有空格替换为 %20

<Url class="class">http://www.ccc.com/Files/thumbnails/Gone%20Dark.jpg</Url>

请注意,空间 in<Url class="class">保持不变,而空间 inGone Dark.jpg已更改为Gone%20Dark.jpg

编辑:这些值在 SQL 数据库中,我需要对它们进行编码。这REPLACE(path, strPtrn, strDst)还不够强大(或者我认为)。

4

4 回答 4

1

您应该使用 URLEncoder 类中的另一种方法:URLEncoder.encode(String, String)。第一个参数是要编码的字符串;第二个是要使用的字符编码的名称(例如,“UTF-8”)。

或者

你应该尝试这样的事情

String url = "http://example.com/query?q=" + URLEncoder.encode("random word £500 bank $", "ISO-8859-1"); // Or "UTF-8".
于 2013-07-02T08:55:56.040 回答
1

1分钟写完,没时间想太多(我在上班),只是给你个提示

http://sqlfiddle.com/#!6/d41d8/5194

declare @input nvarchar(max) = '<Url class="class">http://www.ccc.com/Files/thumbnails/Gone Dark.jpg</Url>'
declare @opentag nvarchar(256) = SUBSTRING(@input, 1, CHARINDEX('>', @input))
declare @closetag nvarchar(256) = SUBSTRING(@input, CHARINDEX('</',@input), 6)
declare @data nvarchar(max) = SUBSTRING(@input, CHARINDEX('>', @input)+1, LEN(@input)-LEN(@opentag)-LEN(@closetag))

select @opentag + REPLACE(@data, ' ', '%20') + @closetag
于 2013-07-02T09:21:57.937 回答
0

如果您使用的是 Java,那么您可以使用URLEncoder.encode()方法对 url 进行编码,然后再将其存储在数据库中。这样,空格和特殊字符将被相应地处理。

于 2013-07-02T08:53:59.667 回答
0

这是一个不使用变量的你可以一次处理表中的所有记录

SELECT 
    LEFT(url,CHARINDEX('>',url))+
    REPLACE(SUBSTRING(url,
                      CHARINDEX('>',url)+1,
                      CHARINDEX('</',url)-CHARINDEX('>',url)-1),
            ' ', '%20') +
    RIGHT(url,LEN(url) - CHARINDEX('</',url) + 1)
  FROM t1

SQLFiddle

于 2013-07-02T09:43:43.237 回答