0

I need to test the length of string $A in an UltraEdit script (JavaScript), and then pad it out with leading blanks if it is less than x (say: 30). There's the following suggesting to be found on Stack Overflow, but it doesn't seem to work in an UltraEdit script.

$AAA .= (" " x (35 - length($AAA)));

Suggestions appreciated.

PS: UltraEdit uses JavaScript core engine for scripts.

Mofi
  • 46,139
  • 17
  • 80
  • 143
fvg
  • 11
  • 2

2 Answers2

1

In JavaScript core used in UltraEdit scripts there is no function to print formatted into a string variable.

But it is nevertheless very easy to create aligned strings with leading spaces or zeros.

Example for fixed length output of a number:

var nNumber = 30;            // number to output right aligned with 4 digits
var sAlignSpaces = "    ";   // string containing the spaces (or zeros) for aligning

// Convert integer number to decimal string.
var sNumber = nNumber.toString(10);
// Has the decimal string less than 4 characters as defined by sAlignSpaces?
if (sNumber.length < sAlignSpaces.length)
{
   // Build decimal string new with X spaces (here 2) from the alignment
   // spaces string and concatenate this string with the number string.
   sNumber = sAlignSpaces.substr(0,sAlignSpaces.length-sNumber.length) + sNumber;
}
// String sNumber has now always at least 4 characters with
// 0 to 3 leading spaces depending on decimal value of the number.

Example for aligning positive numbers dynamically depending on highest number:

var nHighestNumber = 39428;  // highest number usually determined before
var nCurrentNumber = 23;     // current number to output right aligned

// Convert the highest number to a decimal string and get a copy
// of this string with every character replaced by character '0'.
// With highest number being 39428 the created string is "00000".
var sLeadingZeros = nHighestNumber.toString(10).replace(/./g,"0");

// Convert integer number to decimal string.
var sNumber = nCurrentNumber.toString(10);
// Has the decimal string of the current number less
// characters than the decimal string of the highest number?
if (sNumber.length < sLeadingZeros.length)
{
   // Build decimal string new with X (here 3) zeros from the alignment
   // string and concatenate this leading zero string with the number string.
   sNumber = sLeadingZeros.substr(0,sLeadingZeros.length-sNumber.length) + sNumber;
}
// String sNumber has now always at least 5 characters with 0 to 4
// leading zeros depending on decimal value of the positive number.
Mofi
  • 46,139
  • 17
  • 80
  • 143
0

I think what you are looking for is this:

http://msdn.microsoft.com/en-us/library/66f6d830.aspx

Russ B
  • 830
  • 1
  • 6
  • 8
  • Thank you. Trouble is: Javascript doesn't seem to have this command. – fvg May 07 '13 at 10:03
  • Ah, I see. I don't know how I read your question wrong. Sorry about that. You could try creating an array of the spaces you need to prepend to your string and add your existing string as the last element and then do a .join('') on the array. It's not the cleanest but it might work. – Russ B May 08 '13 at 11:14