addHyphens static method

String? addHyphens(
  1. String? uuid
)

Adds hyphens to a 32-character UUID string to create the standard format.

Converts a compact UUID (32 chars) to standard format (36 chars): 123e4567e89b12d3a456426614174000123e4567-e89b-12d3-a456-426614174000

Returns:

  • The UUID with hyphens if input is valid 32-char hex string
  • The original string if it already contains hyphens
  • null if input is null, empty, or not exactly 32 characters

Example:

UuidUtils.addHyphens('123e4567e89b12d3a456426614174000');
// Returns '123e4567-e89b-12d3-a456-426614174000'

UuidUtils.addHyphens('123e4567-e89b-12d3-a456-426614174000');
// Returns '123e4567-e89b-12d3-a456-426614174000' (unchanged)

UuidUtils.addHyphens('too-short'); // Returns null

Implementation

static String? addHyphens(String? uuid) {
  if (uuid == null || uuid.isEmpty) {
    return null;
  }

  // Already has hyphens
  if (uuid.contains('-')) {
    return uuid;
  }

  // Must be exactly 32 hex characters
  if (uuid.length != _uuidLengthWithoutHyphens) {
    return null;
  }

  if (!_hexOnly32Regex.hasMatch(uuid)) {
    return null;
  }

  final StringBuffer sb = StringBuffer()
    ..write(uuid.substring(0, _segment1End))
    ..write('-')
    ..write(uuid.substring(_segment1End, _segment2End))
    ..write('-')
    ..write(uuid.substring(_segment2End, _segment3End))
    ..write('-')
    ..write(uuid.substring(_segment3End, _segment4End))
    ..write('-')
    ..write(uuid.substring(_segment4End));

  return sb.toString();
}