循环数组的索引

时间:2018-01-23 08:05:55

标签: perl

我需要提取字符串中的每个字符并在索引中显示位置。

我的编码是:

    $(document).ready(function() {
  //localStorage.clear();
  wert = 0;
  if (localStorage.getItem("wert") !== null) {
    wert = parseInt(localStorage.getItem("wert")) + 1;
  }

  fenster_anzahl = parseInt(localStorage.getItem("wert", wert));
  for (var i = 1; i <= fenster_anzahl; i++) {
    if (localStorage.getItem('site_' + i) !== null) {
      $(".arrowcontainer").hide(0);
      saved_url = localStorage.getItem('site_' + i);
      //alert(i);
      $("#content").prepend('<div class="wrap wrapadded" style="overflow:hidden;"><iframe  class="added-iframe" style="transform: scale(0.75);transform-origin: -15% 0;  width:150%; height:1800px;" src="' + saved_url + '" name=""></iframe><button class="deletebutton" id="site_' + i + '">x</button></div>');
    }
  }



  $("#content").on("click", ".deletebutton", function() {

    $(this).parent().hide();
    localStorage.removeItem($(this).attr('id'));
  });

  $(".addbutton").mouseup(function() {
    $("#content").prepend('<div class="wrap wrapadded" style="overflow:hidden;"><div style="margin-top:80px;">Bitte URL des Airtrackers eingeben</div><br><input type="text" class="url_eingeben" style="height:40px; width:200px; margin-top:50px; border:0px; font-size:15pt; padding:20px; background:#013780; color:#FFF" value="http://"><br><button class="bestaetigen" style="padding: 20px; margin-top:50px;">Bestätigen</button><button class="deletebutton" id="site_' + wert + '">x</button></div>');
    $(".arrowcontainer").fadeOut(200);

  });





  function addURL(obj, url) {

    wert = parseInt(wert) + 1;
    obj.parent().closest('div').html('<iframe  class="added-iframe" style="transform: scale(0.75);transform-origin: 0 0;  width:150%; height:1800px;" src="' + url + '" name=""></iframe><button class="deletebutton" id="site_' + wert + '">x</button>');
    localStorage.setItem("site_" + wert, url);
    localStorage.setItem("wert", wert);

    $(document).ready(function() {
      var iFrameDOM = $("iframe#site_" + wert).contents();

      iFrameDOM.find("body").css("background", "#f00");
    });

  }




  $("#content").on("click", ".bestaetigen", function(e) {
    var url = $(this).prevAll('input').val();
    addURL($(this), url);
  });
  $("#content").on("keyup", ".url_eingeben", function(e) {

    if (e.which == 13) {
      var url = $(this).val();
      addURL($(this), url);
    }
  });
});

但是它显示了索引位置0的所有字符

2 个答案:

答案 0 :(得分:1)

一种简单的方法是将split字符串放入其字符列表中并将其分配给数组

my @chars = split //, $string;

然后按照您的意愿迭代数组的索引foreach my $i (0..$#chars)

但是,在这种情况下使用substr并不合理。它返回给定位置$i的单个字符,然后@a包含单个元素。

如果您想使用substr,则必须处于$i0迭代到字符串长度-1的循环中,因此,提取每个字符。然而,这将是非常低效的,涉及为每个角色调用substr

使用正则表达式和pos

use warnings;
use strict;
use feature 'say';

my $string = q(abcdefg); 

while ($string =~ /(.)/g) { say "$1: ", pos $string }

此处.匹配任何字符,而/g修饰符使其在下一次迭代中从该位置继续匹配,从而逐字符扫描字符串。由于每个匹配都由()捕获,因此可在$1中找到。 pos&#34; 返回上次m//g搜索停止的位置的偏移 ...&#34;

答案 1 :(得分:-1)

在你的例子中

@a

是一个包含一个单独元素的数组,因为

是空字符串
$seq2

未初始化。因此预期答案为:0和空字符串。