当前位置: 首页 > 知识库问答 >
问题:

如何在Javascript中拆分我的字符串以用于特殊情况

虞唯
2023-03-14

我希望我的字符串使用“,”(逗号),但我的字符串有一些特殊情况请帮助我

input : a,"d,e,f",g //string in csv`

     var myarray=str.spilt(",");

输出:<代码>myarray[0]=a,myarray[1]=d,myarray[3]=e,MyArArray[4]=f…..

所需输出 : 迈拉雷[0] =a ,迈拉雷[1]=“d,e,f”,迈拉雷[2] = g

请帮帮我……谢谢

共有3个答案

蒲功
2023-03-14

强烈建议使用经过测试的CSV-parser库而不是任何正则表达式来解析CSV。

在常见的例子中:

    < li >爸爸解析 < li>JQuery-CSV < li>D3.js DSV模块,包括一个CSV解析器

您的示例使用

    <李>..Papa Parse可以自动检测分隔符,并且已经默认了带引号的字符串:< code>quoteChar: '"'(和您的一样)。在线试用:
var csvInput = 'a,"d,e,f",g';
var results = Papa.parse(csvString);
console.log(results);

输出(从控制台复制):

{
  data: [
    "a",
    "d,e,f",
    "g"
  ],
  errors: []
  meta: {delimiter: ",", linebreak: "↵", aborted: false, truncated: false, cursor: 11}
}
  • …JQuery CSV,您可以在线尝试:
var input = 'a,"d,e,f",g';
var result = $.csv.toArray(input);
console.log(result);

// even configurable
$.csv.toArrays(input, {
  delimiter: "\"", // already the default, custom value delimiter character
  separator: ',', // already the default, custom field separator character
});

输出:

[
  "a",
  "d,e,f",
  "g"
]

CSV解析的正则表达式可以是简单的,如split(',')或长,繁琐和脆弱 - 地下反冲,如 regular-expressions.info 所述:“一个真实的例子:匹配CSV记录”。

此外:

    < li >正则表达式不容易配置。 < li >正则表达式很难文档化、维护、模块化或扩展。

如果你还想尝试,那就读吧

  • 本·纳德尔(2009):“问本:用Javascript Exec()正则表达式命令解析CSV字符串”
  • 解析CSV数据的示例JavaScript代码
  • 如何使用JavaScript解析数据中包含逗号的CSV字符串
  • Regex to解析带有嵌套引号的csv
  • 如何从*读取数据。CSV文件是否使用javascript
施洛城
2023-03-14

在JS中使用mapcat操作符会更加平滑。

let input = 'a,"d,e,f",g'
var result = []
input.split('"').forEach((e, i) => {
    result = result.concat( i % 2 == 0 ? e.split(',') : e )
})
result = result.filter(e => e != "")

正如ChristianFigueroa所指出的:这对于引号没有包围整个字段的情况不起作用:< code>value, < code > val " UE " < code >," value"

然而,如果这对你不重要的话:jsperf/speedtest

洪伟兆
2023-03-14

小型非正则、迭代和缓慢的方法

var result = [], tmp="", inString = false;
str.split("").forEach(function(char){
  inString = inString != (char === '"');
   if( !inString && char === "," ){
     result.push(tmp);
     tmp = "";
    }else{
     tmp+=char;
    }
});
result.push(tmp);

在行动中

您也可以使用常规的for循环来代替forEach:

for(char of str){ /*...*/ }

然而,这取决于你。

 类似资料:
  • 我想用空格和特殊字符(如果有的话)来分割字符串。例如:用于表示移动交换中心(信号强度)。 目前我正在使用正则表达式来拆分字符串,但我无法同时实现空格和特殊字符的拆分。 更新代码:

  • 嗨,我想在javascript中以特定的方式拆分一个字符串,比如字符串是C:/用户/我/AppData/弹性/弹性1.6。我知道我可以分裂它使用分裂()方法,并使用pop()和Shift()得到第一个和最后一个分裂的字符串,但我想分裂它喜欢,除了最后一个字符串。所以答案应该像“C:/用户/我/AppData/弹性” 我是这样做的,, 我像这样出去了, 但我想要这样,

  • 问题内容: 我该如何更换: “ã”和“ a” “é”和“ e” 在PHP中?这可能吗?我读过某处我可以使用基本字符的ascii值和重音符号的ascii值进行一些数学运算,但是现在找不到任何参考。 问题答案: 这个答案是不正确的。 编写它时,我不理解Unicode规范化。查看francadaval的评论和链接 签出Normalizer类来执行此操作。文档很好,所以我将其链接起来,而不是在这里重复:

  • 问题内容: 我想在不使用split的情况下拆分字符串。任何人都可以解决我遇到的问题,但是我找不到确切的逻辑。 问题答案: 我将假定这是家庭作业,因此我仅给出一些片段作为提示: 查找给定子串的所有出现的索引 这是一个与参数一起使用以查找较大字符串中所有出现的子字符串的示例: 字符串API链接 从指定的索引开始,返回指定子字符串首次出现在该字符串中的索引。如果不存在这种情况,则返回-1。 相关问题 在

  • 问题内容: 如何在JavaScript中使用多个分隔符拆分字符串?我正在尝试在逗号和空格上进行拆分,但是AFAIK,JS的拆分功能仅支持一个分隔符。 问题答案: 传递正则表达式作为参数: 编辑添加: 您可以通过选择数组的长度减去1来获得最后一个元素: …,如果模式不匹配:

  • 本文向大家介绍如何在R中的特殊字符后删除部分字符串?,包括了如何在R中的特殊字符后删除部分字符串?的使用技巧和注意事项,需要的朋友参考一下 有时我们不需要整个字符串来进行分析,尤其是当它使分析变得复杂或毫无意义时。在这种情况下,可以从完整的字符串中删除我们认为不必要的字符串部分。例如,假设我们有一个字符串ID:00001-1,但我们不想在该字符串中使用-1,那么我们可以将其删除,这可以通过gsub