相关疑难解决方法(0)

如何在JavaScript中替换所有出现的字符串

我有这个字符串:

"Test abc test test abc test test test abc test test abc"
Run Code Online (Sandbox Code Playgroud)

str = str.replace('abc', '');
Run Code Online (Sandbox Code Playgroud)

似乎只删除abc上面字符串中的第一次出现.如何更换所有出现的内容?

javascript string replace

4081
推荐指数
47
解决办法
319万
查看次数

substr和substring有什么区别?

有什么区别

alert("abc".substr(0,2));
Run Code Online (Sandbox Code Playgroud)

alert("abc".substring(0,2));
Run Code Online (Sandbox Code Playgroud)

他们似乎都输出"ab".

javascript substring

813
推荐指数
8
解决办法
23万
查看次数

在特定索引处插入字符串

如何在另一个字符串的特定索引处插入字符串?

 var txt1 = "foo baz"
Run Code Online (Sandbox Code Playgroud)

假设我想在"foo"之后插入"bar"我该如何实现?

我想到了substring(),但必须有一个更简单,更直接的方式.

javascript string

294
推荐指数
14
解决办法
42万
查看次数

为什么扩展本机对象是一种不好的做法?

每个JS意见领袖都说扩展原生对象是一种不好的做法.但为什么?我们是否获得了性能?他们是否害怕有人以"错误的方式"做到这一点,并添加了可枚举的类型Object,几乎破坏了任何对象上的所有循环?

TJ Holowaychukshould.js为例.他增加了一个简单的getterObject,一切工作正常(来源).

Object.defineProperty(Object.prototype, 'should', {
  set: function(){},
  get: function(){
    return new Assertion(Object(this).valueOf());
  },
  configurable: true
});
Run Code Online (Sandbox Code Playgroud)

这真的很有道理.例如,可以扩展Array.

Array.defineProperty(Array.prototype, "remove", {
  set: function(){},
  get: function(){
    return removeArrayElement.bind(this);
  }
});
var arr = [0, 1, 2, 3, 4];
arr.remove(3);
Run Code Online (Sandbox Code Playgroud)

是否有任何反对扩展本机类型的论据?

javascript prototype prototypal-inheritance

121
推荐指数
7
解决办法
3万
查看次数

用引号替换双引号

我正在寻找一种方法来替换用户输入中"更正"引号的引号.

这个想法

这里有一个简要说明原则的片段:
对于引号,"正确"的引号有开启和关闭,因此需要以良好的方式进行替换.

$('#myInput').on("keyup", function(e) {
  // The below doesn't work when there's no space before or after.
  this.value = this.value.replace(/ "/g, ' “');
  this.value = this.value.replace(/" /g, '” ');
});
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea id="myInput"></textarea>
Run Code Online (Sandbox Code Playgroud)

但上述情况并非在所有情况下都有效.
例如,当"引用的单词"位于句子或行的开头或结尾时.

例子

可能的输入(小心,法语里面!:)):
⋅我很开心!Çayest,j'ai"osé",et mon"âmesœur"étaitaurendez-vous ...
⋅标语上写着:"有些文字"有些文字"有些文字".并"注意这里的空间!"
⋅"Inc"或"rect"quo"tes should"不得更换.
⋅我说:"如果它也适用于'单身',我会更喜欢它!"

正确的输出:
⋅我"快乐"!Çayest,j'ai"osé",et mon"âmesœur"étaitaurendez-vous ...
⋅标志上写着:"有些文字"有些文字"有些文字."和"注意这里的空间!"
⋅"Inc "或"rect"quo"tes应"不应被替换".
⋅我说:"如果它也适用于'单身',我会更喜欢它!"

输出不正确:
⋅标志上写着:"有些文字"有些文字"有些文字."和[...]
为什么不正确:
→报价单的末尾和结束标记之间不应有空格.
→在右引号和单词之间应该有一个空格.
→单词和开头引号之间应该有一个空格.
→开头引号与其报价之间不应有空格.

需要

在所有这些情况下,如何才能有效和轻松地替换报价?
如果可能的话,我也希望解决方案能够"纠正"引号,即使我们在整个句子输入添加它们也是如此.

请注意,我不能(不能)在正则表达式中使用单词分隔符"\ b",因为"重音字符,例如"é"或"ü"不幸被视为单词分隔符."(来源:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions)

当然,如果没有其他解决方案,我会想出一个我认为是单词分隔符的列表并在正则表达式中使用它.但我更喜欢有一个很好的工作功能而不是列表!

任何想法将不胜感激.

javascript regex jquery

15
推荐指数
1
解决办法
712
查看次数

在特定索引处使用.replace()

是否有一个函数可以在特定索引处替换字符串中的字符串一次?例:

var string1="my text is my text";
var string2="my";
string1.replaceAt(string2,"your",10);
Run Code Online (Sandbox Code Playgroud)

结果输出将是"我的文字是你的文字",或者:

var string1="my text is my text";
var string2="my";
string1.replaceAt(string2,"your",0);
Run Code Online (Sandbox Code Playgroud)

在这种情况下,结果将是"你的文字是我的文字".

javascript algorithm jquery

12
推荐指数
2
解决办法
3万
查看次数

在Javascript中创建一波字符串

我似乎无法弄清楚如何用Javascript中的字符串产生波浪。

规则:

  1. 输入将始终为小写字符串。
  2. 忽略空格。

预期结果:

wave("hello") => ["Hello", "hEllo", "heLlo", "helLo", "hellO"]

wave (" h e y ") => [" H e y ", " h E y ", " h e Y "]

wave ("") => []
Run Code Online (Sandbox Code Playgroud)

据我所知。当前的代码会给我一个答案["hello", "hello", "hello", "hello", "hello"]。我正在考虑使用第二个for循环并以某种方式将每个新字母大写,但是我很困惑。如果答案可以避免在loop内部使用loop,我也将不胜感激O(n^2)。由于BIG O可伸缩性

const wave = (str) => {
    if(typeof str === 'string' && str === str.toLowerCase()){
       for (let index = 0; index < str.length; index++) {
        array.push(str);
    }
    for (let index = …
Run Code Online (Sandbox Code Playgroud)

javascript arrays

7
推荐指数
1
解决办法
399
查看次数

为什么 array[i].charAt(0).toUpperCase() 不会传递给 array[i][0]

我正在尝试制作一个 javascript 程序,它接受一个字符串并将每个单词的第一个字母大写,并使所有其他字符小写。

function titleCase(str) {
  str = str.toLowerCase();
  var array = str.split(" ");
  for(var i =0; i< array.length ; i++){
    array[i][0] = array[i].charAt(0).toUpperCase();

  } 
  var finalString = array.join(" ")
  return finalString ; 
}

console.log(titleCase("I'm a little tea pot"));
Run Code Online (Sandbox Code Playgroud)

由于某种原因array[i].charAt(0).toUpperCase();不会将其值传递给array[i][0]. 这最终使它返回仅包含小写字母的字符串,而不是每个单词的第一个字母都大写。

javascript arrays

6
推荐指数
1
解决办法
3343
查看次数

用#替换所有字符,最后4除外

function maskify(cc) {
    var dd = cc.toString();
    var hash = dd.replace((/./g), '#');
    for (var i = (hash.length - 4); i < hash.length; i++) {
        hash[i] = dd[i];
    }
    return hash;
}
Run Code Online (Sandbox Code Playgroud)

我试图用#除了最后一个4之外的所有字符替换.为什么它不起作用?

javascript loops

6
推荐指数
2
解决办法
6025
查看次数

用Javascript,Jquery中的字符串替换特定索引处的字符

是否可以用字符串替换特定位置的字符

让我们说有一个字符串: "I am a man"

我想用字符串替换7处的字符"wom"(不管原始字符是什么).

最终结果应该是: "I am a woman"

javascript jquery actionscript

5
推荐指数
1
解决办法
3万
查看次数