简单的问题是,我正在整理一些笔记,每当我想对那些以表情开始的工具提示进行排序时,我就会遇到一个问题(因为.substr(0,1)给我的?(表情符号取2 )。因此,由于我想保留"HELLO“的工具提示-作为H的表情符号,我需要使用.substr(0,2),但所有其他笔记有2个字符,例如。你好他是。
不过,我发现了符文https://www.npmjs.com/package/runes
所以现在的问题是,我不想重复,通过runes.substr运行每一个音符(“我的许多笔记”,1)我想让一个可变的跑步者。
示例
var str = "Hello world!";
var res = str.substr(0,1); 正如您可以看到的那样,JS刚才说,str.substr,我的问题是我如何做str.runes.substr或任何其他方式来实现相同的事情。提前感谢!
var runes = require("runes")
var tooltip = 'sdas dsa'
tooltip.runes.substr(0, 1);发布于 2018-02-23 15:50:36
Runes.substr(工具提示,0,1) -将是一个解决方案
发布于 2018-02-23 16:00:10
首先,我将回答您的问题,,但是请阅读底部附近的警告。
从技术上讲,您可以使用String.prototype.func = someFunc使其在字符串中可用:
String.prototype.reverseAndCaps = function () { return `${this}`.split('').reverse().join('').toUpperCase() };
console.log("hello".reverseAndCaps());
在类似的函数中,使用this来引用字符串(通常需要将其转换为字符串以获得基本形式)。
因此,对于您的runes,您可以这样做:
Object.assign(String.prototype, { runes: function() {
// replace this object with `runes` itself
return {
substr: (...args) => this.substr.apply(this, args)
};
} });
console.log("hello".runes().substr(0, 2));
注意,为了正确地绑定"this“,runes()需要包装在一个函数中。您可以使用其他方法来避免这样做,但它们必须应用于每个字符串。
尽管如此,强烈建议您不要这样做。更改原语会导致各种意外的副作用,并使您的代码更难以维护,因为您有各种各样的神奇的额外的东西,而这些东西从何而来可能并不明显。
更别提了,说runes.substr(str, 0, 1)并不比str.runes.substr(0, 1)短。
https://stackoverflow.com/questions/48951467
复制相似问题