【问题标题】:JavaScript logic - Parsing a textareaJavaScript 逻辑 - 解析文本区域
【发布时间】:2013-01-12 16:17:21
【问题描述】:

我需要获取一个包含有关帐户的格式化信息的文本框,然后以某种方式对其进行排序。我想知道将信息解析为二维数组是否是理想的(我试图使其尽可能高效),或者我是否应该制作将在字段中保存信息的帐户对象。

该程序仅用于格式化数据,以便无需复制/粘贴即可打印出来。

到目前为止我...

function generateOutputfvoc()
{
    var accountLines = document.getElementById('accountLines').value;
    var accountLinesTemp = accountLines.split(/[\s]/);

    for(var i = 0; i < accountLinesTemp.length; i++)
    {
        if(accountLinesTemp[i].match(/

编辑 (1-18-13):这是一个示例输入。它基本上是从网络 CRM 工具复制的文本。请注意,这个示例输入是我随机输入的。

P8B000001234567     stackoverflow   Thing   12522225555     444         Active 2005-02-26   CO1000123456     
P8B000001234568     stackoverflow   Another Thing       444         Active  2005-02-26  CO1000123456     
P8B000001234569     stackoverflow   Another Thing       556         Active  2005-02-26  CO1000123456      

我希望我的程序获取文本并像这样简单地输出文本:

P8B000001234567 stackoverflow Thing         12522225555 444 Active 2005-02-26 CO1000123456
P8B000001234568 stackoverflow Another Thing             444 Active 2005-02-26 CO1000123456
P8B000001234569 stackoverflow Another Thing             556 Active 2005-02-26 CO1000123456

另外,我想知道我是否应该使用 jQuery 变量。我问这个是因为我一直在网上寻找很多,我发现使用如下代码的示例:

$check=fcompcheck();
if($check)
{
    $output=document.frm1.type.value+" / ";
    $output=$output+"Something - "+document.frm1.disco.value+" / ";

注意:$output 变量。美元符号表示一个 jQuery 变量,对吧?

感谢您为我提供的任何帮助。

更新 (1-19-13):我已经尝试过,但进展缓慢。我习惯了 Java 编程,我的 JavaScript 看起来太相似了,我可以看出我正在犯错误。

我一步一步来。这是我现在使用的逻辑。

  • Person 将文本粘贴到文本框中并按下生成按钮
  • 程序获取文本框的内容并将其解析为一个大数组,仅删除空格
  • 然后程序在文本中搜索模式并开始将值传递给变量

我试图让程序简单地识别模式“摘要部分折叠名称”,因为这四个词应该始终按此顺序排列。一旦识别出这一点,它将把接下来的两个数组值传递给名字和姓氏变量。以下是部分代码:

var contactNameFirst, contactNameLast;

// Parse the input box into an array
var inputArr = document.getElementById('inputBox').value.split(/[\s]/);

for(var i = 0; i < inputArr.length; i++)
{
    if(inputArr[i] == "Summary" && inputArr[i - 1] == "section" && inputArr[i - 2] == "Collapse" && inputArr[i + 1] == "Name")
    {
        if(inputArr[i + 2] != "Details")
        {
            contactNameFirst = inputArr[i + 2];
        }
        else
        {
            contactNameFirst = "";
        }
        if(inputArr[i + 3] != "Details")
        {
            contactNameLast = inputArr[i + 3];
        }
        else
        {
            contactNameLast = "";
        }
    }
}

document.getElementById('contactNameOutput').innerHTML = contactNameFirst + " " + contactNameLast;

另外,我现在应该为此创建一个新帖子,还是继续编辑这个帖子?

【问题讨论】:

  • 你能贴出你所有的代码吗,在第二行 if 之后好像有一些代码丢失了?另外,关于 jQuery,在不知道其余代码在做什么的情况下,很难建议您是否需要使用它。
  • 你能发一个jsfiddle.net吗? jQuery 变量是什么意思?
  • 更重要的是,需要一个示例输入和预期输出
  • 我编辑了原始帖子并添加了示例。谢谢。
  • var 名称中的 $ 只是一个约定,它没有任何事情。此外,对于这种类型的事情,为什么不使用文本框组,并提供添加新组的功能以便表单可以处理任意数量的数据,而不是解析来自文本区域的输入?

标签: javascript jquery string parsing textarea


【解决方案1】:

您的accountLinesTempStringArray,您可以使用Array.sort 函数按预期对数组进行排序,然后在必要时使用Array.join 获取完整的字符串。

有关详细信息,请参阅 MDN 上的 https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/sort

【讨论】:

  • 感谢您的回复。我会先调查一下。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-03
相关资源
最近更新 更多