Script to add numbers and display the total

Help with writing and running scripts

Script to add numbers and display the total

Postby Tim » Tue May 08, 2012 12:10 pm

I'd like to add numbers that always appear after the same set of characters in a string and display the total.
Code: Select all
xyz.htm' target='sub_results'>27 time(s)
abcedgy.htm' target='sub_results'>3 time(s)
123.htm' target='sub_results'>2 time(s)
668bp6.htm' target='sub_results'>2 time(s)
a.htm' target='sub_results'>1 time(s)


In this case it would be 27+3+2+2+1=35 which is pretty simple to add up. But I have various files with from 250 to 3700 lines and would like to be able to get totals from them.

The common thing is target='sub_results'>number from 1 to 5000 time and there is not more than one occurrence of the string per line.

Is this a feasible idea? Thanks.
Tim
Basic User
Basic User
 
Posts: 14
Joined: Tue Aug 19, 2008 1:06 pm
Location: Ottawa, Ontario

Re: Script to add numbers and display the total

Postby Mofi » Wed May 09, 2012 12:32 am

The following script should work. I tested it on your example with UE v18.00.0.1034. It is not clear for me if there is one file containing all the results or if you want to get the results from a set of files. The script expects that the lines with the results are in active file on script execution. You may need first to run a Find in Files with Results to Edit Window if you first need to get all lines with results from a set of files.

Code: Select all
if (UltraEdit.document.length > 0) {  // Is at least 1 file opened?
   // Define environment for the script.
   UltraEdit.insertMode();
   UltraEdit.columnModeOff();
   // Move caret to top of active file.
   UltraEdit.activeDocument.top();
   // Define the parameters for the case-sensitive Perl regular
   // expression Find command used to find the numbers to sum.
   UltraEdit.perlReOn();
   UltraEdit.activeDocument.findReplace.mode=0;
   UltraEdit.activeDocument.findReplace.matchCase=true;
   UltraEdit.activeDocument.findReplace.matchWord=false;
   UltraEdit.activeDocument.findReplace.regExp=true;
   UltraEdit.activeDocument.findReplace.searchDown=true;
   if (typeof(UltraEdit.activeDocument.findReplace.searchInColumn) == "boolean")
      UltraEdit.activeDocument.findReplace.searchInColumn=false;
   // Initialize the 2 number variables for the sum and the counter for found results.
   var nSum = 0;
   var nCount = 0;
   // Run from top of file to bottom a case-sensitive Perl regular expression
   // Find searching for numbers after fixed string "target='sub_results'>"
   // using a lookbehind to select just the found number by the Find command.
   while (UltraEdit.activeDocument.findReplace.find("(?<=target='sub_results'>)\\d+")) {
      // Convert the found number string to an integer number and add it to existing sum.
      nSum += parseInt(UltraEdit.activeDocument.selection,10);
      nCount++;  // Increase the counter by 1 on every found results number.
   }
   // Display the user of the script the sum with a message box.
   UltraEdit.messageBox("Sum of " + nCount + " results is " + nSum);
}
User avatar
Mofi
Grand Master
Grand Master
 
Posts: 4049
Joined: Thu Jul 29, 2004 11:00 pm
Location: Vienna

Re: Script to add numbers and display the total

Postby Tim » Wed May 09, 2012 6:17 am

Thanks once again Mofi. This accomplishes exactly what I wanted. Works great!

Cheers from Ottawa! :D
Tim
Basic User
Basic User
 
Posts: 14
Joined: Tue Aug 19, 2008 1:06 pm
Location: Ottawa, Ontario


Return to Scripts