【问题标题】:trying to break the string into multiple sections试图将字符串分成多个部分
【发布时间】:2020-11-28 16:26:24
【问题描述】:

我的字符串值为:

Half Day Morning (9:00 AM - 11:30 AM)  (M/T/W/TH/F)

我正在使用 replace 的冷融合代码,但这不起作用

使用javascriptjquery 或任何服务器端,我试图将这段代码破解成这样

  1. Half Day Morning 
    2. 9:00 AM - 11:30 AM 
    3. M/T/W/TH/F 

知道我该怎么做,计划使用正则表达式,但不确定服务器端正则表达式是否会成功,我使用冷融合

我在行周围使用 cfoutput 查询

【问题讨论】:

  • 嗯...jquery 不是服务器端的。
  • @expressjs123, "jquery OR 任何服务器端".
  • 听起来像(javascript、jquery 或服务器端)
  • “我正在使用 replace 的冷融合代码,但这不起作用”。你说它不起作用,但你没有显示你的代码。我很确定这是提问的必要条件。

标签: javascript php jquery coldfusion lucee


【解决方案1】:

您可以试试这个regex,正如这里在 PHP 中演示的那样。

输出:

1. Half Day Morning
2. 9:00 AM - 11:30 AM
3. M/T/W/TH/F

代码:

<?php

$s = 'Half Day Morning (9:00 AM - 11:30 AM)  (M/T/W/TH/F)';


if (preg_match('/([^\(]+)\s+\(([^\)]+)\)\s+\(([^\)]+)\)/', $s, $matches) === FALSE)
// preg_last_error_msg() available since PHP 8 which is now out!
    die('preg_match() failed: ' . preg_last_error_msg());

foreach ($matches as $num => $text)
{
    if ($num)
        echo "$num. $text\n";
}

【讨论】:

    【解决方案2】:

    使用 split() 并通过索引值访问它

    function myFunction() {
      var str = "Half Day Morning (9:00 AM - 11:30 AM)  (M/T/W/TH/F)";
       str = str.replaceAll(")", "");
       var res = str.split("(");
      document.getElementById("demo").innerHTML = "1. "+res[0]+"<br> 2. "+ res[1]+"<br> 3. "+ res[2];
    }
    <!DOCTYPE html>
    <html>
    <body>
     Half Day Morning (9:00 AM - 11:30 AM)  (M/T/W/TH/F)
     <br>
    
    <button onclick="myFunction()">Try it</button>
    
    <p id="demo"></p>
    
    </body>
    </html>

    【讨论】:

      【解决方案3】:

      如果字符串的格式总是像括号一样,那么简单的拆分应该可以解决问题

      var str = "Half Day Morning (9:00 AM - 11:30 AM)  (M/T/W/TH/F)";
      str.replace(")", "");
      var res = str.split("(");
      
      var str1 = "1. " + res[0].trim();
      var str2 = "2. " + res[1].trim();
      var str3 = "3. " + res[2].trim();

      【讨论】:

        【解决方案4】:

        已修改以显示如何处理查询结果

        这是一种使用 ColdFusion 代码的方法:

        <cfoutput query="NameOfQuery">
            <cfset StringAsList = Replace(FieldFromQuery, ")", "", "all")>
            <cfloop index="LoopCounter" from="1" to="#ListLen(StringAsList, '(')#">
            #LoopCounter#. #ListGetAt(StringAsList, LoopCounter, "(")#<br>
            </cfloop>    
        </cfoutput>
        

        你可以乱搞here

        【讨论】:

        • 但是如果我有多条记录并且每一行都有类似上面的格式,如何进行查询循环
        • 我在原始问题中没有看到。
        • 呃,我忘记在问题中提及它,我将编辑问题
        猜你喜欢
        • 2014-01-26
        • 2016-03-23
        • 2014-01-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-27
        相关资源
        最近更新 更多