【问题标题】:How to style a character in a string at specific index?如何在特定索引处设置字符串中的字符样式?
【发布时间】:2013-08-17 21:55:51
【问题描述】:

您能否就如何在特定索引处设置字符串中的一个字符的样式提供一些指导?这个字符串的索引来自一个数组,在某些情况下数组是空的,所以如果数组不为空,我只需要设置字符串中的字符样式

$indices = array(74, 266); 

$string  = "CAGGACACTCTTTCTAGTGTTGATTCACCTCGAAGAAGGTCTGGCCTATTAAGAGATCAAGTTCAGTTGGTAAAAAGAAGCAACTCTGCTCGTTATGAGATAGTCCCGATTCAAGATCAACTATCATTTGAGAAGGGTTTCTTTATTGTAATCCGTGCATGCCAGTTGTTGGCTCAGAAGAATGAAGGCATTGTACTGGTGGGAGTCGCTGGTCCTTCAGGGGCCGGAAAGACCATGTTTACAGAAAAGATCCTGAATGTTATGCCTAGTATTGCAATCATAAACATGGACAACTACAATGATCCCAGTCGTATCATTGATGGAAACTTCGACG";

那么如何在索引 74 和 266 处添加一个环绕字符的跨度,以便我可以赋予它不同的样式?

我的数据来自数据库,所以我需要使其动态化。

谢谢

【问题讨论】:

    标签: php string highlighting dna-sequence


    【解决方案1】:

    这相当简单:您只需要循环中的几个substrs 并跟踪字符数。

    这是我制作的工作代码:

    // zero-based indices
    $indices = array(3, 10, 25);
    
    // input
    $in = 'abcDefghijKlmnopqrstuvwxyZ';
    
    $openTag = '<b>';
    $closeTag = '</b>';
    
    $out = '';
    $last = 0;
    foreach($indices as $i) {
        $fragment = substr($in, $last, $i-$last);
        $letter = substr($in, $i, 1);
        $last = $i+1;
    
        $out .= $fragment . $openTag . $letter . $closeTag;
    }
    
    $out .= substr($in, $last);
    
    // output
    echo $out;
    

    对于这个例子,$outabc&lt;b&gt;D&lt;/b&gt;efghij&lt;b&gt;K&lt;/b&gt;lmnopqrstuvwxy&lt;b&gt;Z&lt;/b&gt;


    为方便起见,这里也将它作为一个函数

    function highlightChars($text, $indices, $openTag, $closeTag) {
        $out = '';
        $last = 0;
        foreach($indices as $i) {
            $fragment = substr($text, $last, $i-$last);
            $letter = substr($text, $i, 1);
            $last = $i+1;
    
            $out .= $fragment . $openTag . $letter . $closeTag;
        }
    
        $out .= substr($text, $last);
    
        return $out;
    }
    

    【讨论】:

    • 感谢您的帮助..正是我想要的。
    • 不客气;)。实际上,我真的很喜欢这个问题,有点挑战。
    猜你喜欢
    • 1970-01-01
    • 2011-10-20
    • 1970-01-01
    • 2012-01-20
    • 1970-01-01
    • 2012-11-25
    • 2022-12-22
    相关资源
    最近更新 更多