"AllCharAt"

Status
Niet open voor verdere reacties.

NielsDesmet

Gebruiker
Lid geworden
19 mei 2008
Berichten
301
"AllIndexOf"

Kan er me AUB iemand een variatie maken op indexOf, die IPV de eerste match een array van ALLE matches returnt? Ik ben het zelf ook aan het proberen maar ik raak er echt niet aan uit...
 
Laatst bewerkt:
Altijd ;)

Code:
function indexesOf(haystack, needle, startAt)
{
  if (typeof startAt == "undefined")
    startAt = 0;
  var returnArr = new Array();
  var curPos = startAt;
  var safeGuard = 0;
  while ( safeGuard < 151 && (curPos = haystack.indexOf(needle, curPos)) > -1)
 {
   returnArr.push(curPos);
   curPos += 1;
   safeGuard += 1;
 }
 return returnArr;
}

var spul = indexesOf("abcabcabc", "ab");
spul = indexesOf("abcabcabc", "ab", 2);


of:
Code:
function indexesOf(needle, startAt)
{
  if (typeof startAt == "undefined")
    startAt = 0;
  var returnArr = new Array();
  var curPos = startAt;
  var safeGuard = 0;
  while ( safeGuard < 151 && (curPos = this.indexOf(needle, curPos)) > -1)
 {
   returnArr.push(curPos);
   curPos += 1;
   safeGuard += 1;
 }
 return returnArr;
}
String.prototype.indexesOf = indexesOf;

var str = "abcabcabc";
var spul = str.indexesOf("ab");
spul = str.indexesOf("ab", 2);
 
Laatst bewerkt:
Via een functie: :)
PHP:
<script type="text/javascript">

 function allIndexOf(s,p) {
  var a = new Array();
  for (var i = 0; i < s.length; i++) if (s.substring(i).indexOf(p) == 0) a[a.length] = i;
  return a;
  };

 var s = 'ee--ee---eee--ee--e-';
 var a = allIndexOf(s,'ee');

 alert(a);

</script>
Of, en dat is mooier ;), via een prototype:
PHP:
<script type="text/javascript">

 function protoAllIndexOf(p) {
  var a = new Array();
  for (var i = 0; i < this.length; i++) if (this.substring(i).indexOf(p) == 0) a[a.length] = i;
  return a;
  };

 String.prototype.allIndexOf = protoAllIndexOf;

 var s = 'ee--ee---eee--ee--e-';
 var a = s.allIndexOf('ee');

 alert(a);

</script>
Vr.Gr. Egel.
 
We doen weer eens hetzelfde Glest. :D

Maar waarom safeGuard < 151 ? Er is geen (nauwlijks) een maximum aan array- of string-lengte in javascript. Toch? :)


Ik heb de scripts nog iets gecombineerd: ;)
PHP:
<script type="text/javascript">

 function protoAllIndexOf(p) {
  var n = 0, a = new Array();
  while ((n = this.indexOf(p,n)) > -1) a[a.length] = n++;
  return a;
  };

 String.prototype.allIndexOf = protoAllIndexOf;

 var s = 'ee--ee---eee--ee--e-';
 var a = s.allIndexOf('ee');

 alert(a);

</script>
Vr.Gr. Egel.
 
Great minds think alike :P

Maar ik had een foutje in mijn begin script staan waardoor het een eindeloze loop werd. Dus ik dacht, ik doe er maar een veiligheids schakelaar in. Maar het zou inderdaad nutteloos horen te zijn.:p /edit: (foutje had ik al verbeterd voordat ik het poste :P )

We doen weer eens hetzelfde Glest. :D

Maar waarom safeGuard < 151 ? Er is geen (nauwlijks) een maximum aan array- of string-lengte in javascript. Toch? :)


Vr.Gr. Egel.
 
Laatst bewerkt:
Een endless loop is exact het probleem dat ik had toen ik mijn versie maakte... Toen dat was gefixt, had ik ook nog dit probleem:

Input:
"01001000100001"

Output:
1,2,3,4

... Wat eigenlijk 1,4,8,13 had moeten zijn. Hij bekeek het dus vanaf de laatste match die hij had gevonden.

EDIT: Veronderstellend dat je zoekt naar de "1", natuurlijk.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan