将逗号分隔的字符串拆分为单独的字符串

Split Comma Separated string into separate strings

本文关键字:字符串 单独 拆分 分隔      更新时间:2023-09-26

我有一个使用JavaScript制作的文件,其中包含网站的本地存储的内容。它已被字符串化,(现在)用"|"分隔。我想把每个"|"后面的这个字符串拆分成一个单独的字符串,这样我就可以1乘1将每个变量及其值输入到本地存储中,因为据我所知,你不能一次设置多个项。以下是我到目前为止所得到的,但经过研究,我还没有找到除了放入数组之外的解决方案。。。

<input type="file" id="file" accept=".io">
<div id="contents"></div>
<script>
var X;
document.getElementById('file').addEventListener('change',
    function () {
        var fr = new FileReader();
        fr.onload = function () {
            document.getElementById('contents').textContent = 
                this.result.replace(/,/g,"|").replace(/:/g,",").slice(1,-1);
        };
        fr.readAsText(this.files[0]);
    }
);
localStorage.setItem("test","1223asd3423");
</script>

我有一种感觉,我正在做的是一种冗长而低效的导出/导入本地存储数据的方法,而且有某种解决方案包含for循环和其他形式的JavaScript的混合,我还没有成为新手。

下面是一个如何格式化原始文件的示例,仅供参考:

Settings.io: (.io file extension, not website domain)
{"AB12_Rubicon":"37","AB9":"99","backgroundColor":"#2e2e2e",....}

新字符串

"AB12_Rubicon","37"|"AB9","99"|"backgroundColor","#2e2e2e"|....

所需结果示例

Newstring1='"AB12_Rubicon","37"';Newstring2='"AB9","99"';

我确信我会编辑这个答案,但

如果你得到的是这个输入

{"AB12_Rubicon":"37","AB9":"99","backgroundColor":"#2e2e2e",....}

那么它不是一个字符串——它是JSON——你不必拆分它来获得值。你必须循环通过它。

首先,您需要检查JSON是否已字符串化,如果是,则需要将其转换回JSON

要检查,只需使用console.log(typeof input);如果是字符串,请使用JSON.parse(input);

现在假设你已经把物体的情况全部整理好了

这是提取值的代码

for (var key in input){
    var current_key = key; // will get value before the ":"
    var current_value = input[key]; // value after ":"
    // do what ever you need
}

编辑:

正是因为问题标题太模糊了,有些人可能会遇到这个问题,看起来像是字符串的减法运算。myvariable_with_string.split(',')