【问题标题】:How do I parse this variable containing \n?如何解析这个包含 \n 的变量?
【发布时间】:2012-11-21 10:36:50
【问题描述】:

我的 mongoDB 文档中有一个非常奇怪的数字。我将整个对象复制到node 控制台。我在这里输出。我认为它是字符串\n's 和实际文本\n's 的组合,或者发生了一些奇怪的事情。有人能告诉我如何从下面的变量中获取数字567899876545678987654 作为字符串吗?

> number
'--- \n- "567899876545678987654"\n- \n'
> JSON.stringify(number);
'"--- \\n- \\"567899876545678987654\\"\\n- \\n"'
> number.replace("\n","");
'--- - "567899876545678987654"\n- \n'
> number.replace(/\n/,"");
'--- - "567899876545678987654"\n- \n'
> number.replace(/-/,"");
'-- \n- "567899876545678987654"\n- \n'

【问题讨论】:

  • +/\d+/.exec( number )[ 0 ];
  • replace 方法只替换第一个实例。您需要number.replace(/\n/g, "") 来替换\n 的所有实例。
  • @jAndy 返回9.405510200828548e+21 作为int。我想要字符串。
  • @ThomasReggi:然后省略前导+
  • /\d+/.exec(number)[0]; 有效。有什么理由在number.match(/\d+/)[0] 上使用它?一样的吧?

标签: javascript regex string node.js mongodb


【解决方案1】:

为什么不对所有数字使用正则表达式,而不是尝试删除其余数字?

actualNumber = number.match(/\d+/);

作为 T.J. Crowder 指出,actualNumber 现在将是一个包含数字的数组(如果有一个)。正如他所建议的那样,这将安全地检索实际数字:

var m = number.match(/\d+/);
if (m) { 
    actualNumber = m[0];
}

【讨论】:

  • 我认为你的意思是 var m = number.match(/\d+/); if (m) { actualNumber = m[0]; } 在理论上 @ThomasReggi 不想要一个数组。
  • 恶心!虽然缺少/g
  • @ThomasReggi:您的样本输入不需要/g
  • 我使用的是 replacenumber.replace(/\n|-|\s/g,""); 让我很接近。
猜你喜欢
  • 1970-01-01
  • 2015-07-26
  • 1970-01-01
  • 2013-05-11
  • 1970-01-01
  • 1970-01-01
  • 2014-02-17
  • 1970-01-01
  • 2018-07-24
相关资源
最近更新 更多