Как посчитать успешным найти (и заменить)

Я пытаюсь подсчитать количество замен, сделанных простым скриптом, например:

$count = 0
Function findAndReplace($objFind, $FindText, $ReplaceWith) {
    $count += $objFind.Execute($FindText, $matchCase, $matchWholeWord, \`
             $matchWildCards, $matchSoundsLike, $matchAllWordForms, \`
             $forward, $findWrap, $format, $ReplaceWith, $replace)
}

Замены сделаны хорошо, но $count остается в 0...

2 ответа

Решение

Это ограниченная проблема. насколько мне известно $count не должен быть инициализирован первым.

Логика приращения выглядит найти. Однако вам нужно будет вернуть его из функции после приращений. В противном случае это все еще будет 0 как определено в рамках области за пределами функции.

Function findAndReplace($objFind, $FindText, $ReplaceWith) {
    $count += $objFind.Execute($FindText, $matchCase, $matchWholeWord, \`
             $matchWildCards, $matchSoundsLike, $matchAllWordForms, \`
             $forward, $findWrap, $format, $ReplaceWith, $replace)
    return $count;
}

$myCountOutSideFunctionScope = findAndReplace -objFind ... -FindText ... -ReplaceWith ...

$count должен быть внутри функции, которую нужно использовать, или поместить ее в качестве параметра.

Попробуй это

Function findAndReplace($objFind, $FindText, $ReplaceWith) {
    $count = 0
    $replacementfound = $objFind.Execute($FindText, $matchCase, $matchWholeWord, \`
             $matchWildCards, $matchSoundsLike, $matchAllWordForms, \`
             $forward, $findWrap, $format, $ReplaceWith, $replace)

    if ($replacementfound -eq "True"){$count++}
    write-host $count
}
Другие вопросы по тегам