gpt4 book ai didi

javascript - 是否有等效于 php 的 strtok 函数的 javascript?

转载 作者:行者123 更新时间:2023-12-01 01:32:11 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





javascript or jquery equivalent of PHP's strtok()?

(7 个回答)


2年前关闭。




我正在寻找一个相当于 php 的 strtok 的 javascript 函数。功能并找到了这个问题/答案:

javascript or jquery equivalent of PHP's strtok()?

有很多很好的拆分选项,但没有一个与 strtok 等效。

我在这里添加了我的输入:

https://stackoverflow.com/a/53163790/1934903

来自帖子:

我不知道 php 的 strtok 的确切等价物。 javascript 中的函数(我正在搜索相同的函数),但我注意到这里的所有答案都忽略了 strtok 函数的细微差别,并想指出它。

如果您要做的只是基于单个标记分解字符串,那么各种拆分和切片方法都可以,但 strtok 不仅仅如此。它走一个字符串并记住它离开的地方。就像它在幕后使用指针一样。

考虑以下字符串:

ullamcorper dignissim non non turpis. Donec sit amet pharetra tortor. Suspendisse tristique luctus %velit, ac maximus tortor ullamcorper et. Vivamus vitae magna a lectus mollis tempus ac commodo orci^. Donec aliquam malesuada massa sed interdum. Curabitur sit amet ex dictum, sollicitudin eros non, rutrum enim.



如果你想在 % 之间换行和 ^在粗体标签中,你会怎么做?您可以拆分、抓取索引等,但 strtok函数将使您以更复杂的方式遍历字符串:
// assume the `$string` variable holds the big string above
$pre = strtok($string, '%');

$boldme = strtok('^');
$bolded = "<b>$boldme</b>";

$post = strtok("\n");

$newstring = implode("", [$pre, $bolded, $post]);

echo $newstring

现在您的新字符串如下所示:

ullamcorper dignissim non non turpis. Donec sit amet pharetra tortor. Suspendisse tristique luctus velit, ac maximus tortor ullamcorper et. Vivamus vitae magna a lectus mollis tempus ac commodo orci. Donec aliquam malesuada massa sed interdum. Curabitur sit amet ex dictum, sollicitudin eros non, rutrum enim."


strtok函数将允许您在不同的时间使用不同的标记来分解字符串,并且由于该函数在初始化后作用于同一个字符串,您可以在调用它之间执行逻辑。

那么,是否有一个实际等效于 php 的 strtok还是您必须从头开始编写此功能?

更新

我想我让人们挂断了假设性的解决方案。我不担心如何拆分字符串一次并对结果进行操作,我在询问一个等价物,以便我了解是否有一个现成的 javascript 等价于 php 中的 strtok 解析工具。

是的,一个 strtok工具不是我发布的示例的最佳选择,该示例是一次使用多个分隔符的简单拆分和替换。

但是 strtok 的状态跟踪能力如果您需要根据解析的第一部分的结果更改解析方式,这是有利的。

就像在我的示例中一样,我给出了两个不同的定界符,一个开始和结束一个,但是如果您尝试进行更复杂的解析,您正在寻找的定界符会根据解析的字符串的前面部分发生变化怎么办?就像您正在根据找到的上一个标点符号寻找特定的标点符号(例如,我刚刚找到一个分号,所以现在我想看看下一个标点符号是句号还是逗号,如果它是我想查找的逗号更多逗号,直到我打一个句号)。

尝试使用拆分或正则表达式来执行此操作,代码可能会变得非常有条件或非常神秘。您可以编写一个类来跟踪选项和字符串状态,或者您可以使用一个已经跟踪字符串状态的函数而只​​需担心分支逻辑。

再次,一个假设,但我想指出我不是问如何拆分字符串或如何替换字符,它更多的是关于是否存在允许这种内置状态跟踪的现有函数或如果我需要从头开始构建它。

如果它不存在也没关系,每当我想使用它时我都必须自己构建它,我只是想知道其他人是否已经做过。

最佳答案

您可以编写一个简单的类来复制功能。

const Tokenizer = function (string) {
this.string = string;

this.tokenize = function (separator) {
const index = this.string.indexOf(separator);

if (index === -1) return false;

const token = this.string.substring(0, index);

this.string = this.string.substring(index + 1);

return token;
}
}


const string = 'Lorem ipsum dolor sit amet, modo probatus ut vix, vel ea alia vocent deleniti. Nam in vitae fastidii periculis. Ei est ludus elaboraret. In vim aliquid epicuri, munere pertinacia pro id, ex eos admodum adversarium.';
const t = new Tokenizer(string);


console.log(t.tokenize('.'));
console.log(t.tokenize('.'));
console.log(t.tokenize('.'));
console.log(t.tokenize('.'));
console.log(t.tokenize('.'));

关于javascript - 是否有等效于 php 的 strtok 函数的 javascript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53163827/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com