leetcode js四种解法 面试题 01.03. URL化

URL化。编写一种方法,将字符串中的空格全部替换为%20。假定该字符串尾部有足够的空间存放新增字符,并且知道字符串的“真实”长度。(注:用Java实现的话,请使用字符数组实现,以便直接在数组上操作。)

示例 1:
输入:"Mr John Smith ", 13
输出:“Mr%20John%20Smith”

示例 2:
输入:" “, 5
输出:”%20%20%20%20%20"

提示:
字符串长度在 [0, 500000] 范围内。

方法一:replaceAll

/**
 * @param {string} S
 * @param {number} length
 * @return {string}
 */
var replaceSpaces = function(S, length) {
    return S.slice(0,length).replaceAll(' ','%20');
};
  • String.slice(start,end)
    slice()返回一个子片段,对原先的string没有影响,与subString的区别是,还可以用负数当参数,相当于是length+start,length+end.
    eg:
var s = "abcdefg";
s.slice(0,4)    // "abcd"
s.slice(2,4)    // "cd"
s.slice(4)      // "efg"
s.slice(3,-1)   // "def"
s.slice(3,-2)   // "de"
s.slice(-3,-1)  // "ef"
  • Array.slice(start,end)
    eg:
var a = [1,2,3,4,5];
a.slice(0,3);    // [1,2,3]
a.slice(3);      // [4,5]
a.slice(1,-1);   // [2,3,4]
a.slice(-3,-2);  // [3]
  • String.replaceAll(substr,substr)
    方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串,该函数会替换所有匹配到的子字符串。
    该方法不会改变原始字符串。

方法二:encodeURI(uri)

encodeURI() 函数可把字符串作为 URI 进行编码。
对以下在 URI 中具有特殊含义的 ASCII 标点符号,encodeURI() 函数是不会进行转义的: , / ? : @ & = + $ # (可以使用 encodeURIComponent() 方法分别对特殊含义的 ASCII 标点符号进行编码。).
参数值:uri 必需。要编码的 URI。
返回值: 字符串,表示编码后的 URI。
提示:使用 decodeURI() 方法可以解码URI(通用资源标识符:UniformResourceIdentifier,简称"URI")。
-----菜鸟教程

/**
 * @param {string} S
 * @param {number} length
 * @return {string}
 */
var replaceSpaces = function(S, length) {
    return encodeURI(S.substring(0,length));
};

对字符串限长后使用

方法三:利用split将字符串分隔成数组,再用join将数组拼接,并返回字符串

先分隔再加入

var replaceSpaces = function(S, length) {
   return S.substr(0, length).split(' ').join('%20')
};
  • substr(start,length)

方法可在字符串中抽取从 start 下标开始的指定数目的字符
length参数可以省略,省略则默认为字符串长度

  • split(string)

split() 方法用于把一个字符串分割成字符串数组
提示: 如果把空字符串 (“”) 用作 separator,那么 stringObject 中的每个字符之间都会被分割。
注意: split() 方法不改变原始字符串。

  • join()

join() 方法将数组作为字符串返回
元素将由指定的分隔符分隔。默认分隔符是逗号 (,)。
注释:join() 方法不会改变原始数组。

方法四:正则表达式

先放代码

var replaceSpaces = function(S, length) {
  return S.substr(0, length).replace(/\s/g, '%20')
};

1.”/ /”这个是固定写法,
2.”\s”是转移符号用以匹配任何空白字符,包括空格、制表符、换页符等等
3.”g”表示全局匹配将替换所有匹配的子串,如果不加”g”当匹配到第一个后就结束了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值