用不同的字母或simbol替换每一次出现的字母

时间:2017-09-21 19:05:10

标签: javascript

这适用于您认为可行的任何语言。有没有办法改变文本输入的外观来替换每个第二个空格(空格,当空格键被击中它创建一个空格)我需要一个几乎像计数器的方式,一旦它计数2个空格然后它取代第二个空格到一个字母或符号。如果有人可以帮助我,这将是惊人的,目的只是改变文本的方式,这样功能无关紧要,只要它读起来像普通文本。 (如果有帮助的话,每个奇数个空格都会被改变。)

例如,我希望能够像这样复制和粘贴一些东西> “我下到海边为我的收藏拾起许多棍子”

并让它返回类似这样的内容

我%%下降%%海运%%我的%收集%%支持

最终目标是使符号成为一种不同的颜色,因此它从文本中脱颖而出,所以如果这样可能会令人惊讶。

2 个答案:

答案 0 :(得分:0)

您可以使用布尔变量来计算奇数和偶数空格以及使用回调函数的string.prototyoe.replace:

var str = 'i went down to the sea to pick up many sticks for my collection';
var odd = true;
str = str.replace(/\s/gi, (spaceChar)=>{
  odd = !odd;
  return !odd ? spaceChar : '%'; // this is what you wrote (every second)
  // return odd ? spaceChar : '%'; // this is what your expected result shows (every second starting with the first occurence)
});

答案 1 :(得分:0)

我选择了javascript,但您可以选择多种语言,有多种方法可以实现此目的。这是解决这个问题时应该使用的思路:

  1. 确定要替换的字符
  2. 确定要用
  3. 替换它的字符
  4. 由于我们不想替换每一个,所以要替换的模式/频率是多少。
  5. 对于第3个问题,您已经说过要替换所有其他事件,因此我们需要跟踪事件的发生次数。并在occurrence modulo 2 = 1时替换它。这表示替换每一个奇怪的事件。

    我选择使用正则表达式来查找句子中的所有空格,有一个计数器n并在每次找到空格时递增计数器。

    这给我们留下了以下代码:

    const input =  "i went down to the sea to pick up many sticks for my collection";
    
    let n = 0;
    const output = input.replace(/\s/g, (m, i, og) => {
      return (n++ % 2) ? m : '%';
    });
    
    // output = "i%went down%to the%sea to%pick up%many sticks%for my%collection"
    

    另请查看String.prototype.replace(),以便了解有关使用正则表达式的信息,并了解该函数的作用。这有助于您将来自己学习和解决类似的问题。