Ho visto la maggior parte delle lingue nel caso in cui il loro metodo di sottostringa utilizzi la lunghezza di una determinata stringa nel metodo poiché l'indice iniziale fornirà una stringa vuota. È decisamente utile quando si scrivono algoritmi che coinvolgono il successivo accorciamento della stringa fino a una stringa vuota. Il problema che ho è che rende la maggior parte dei riepiloghi di questi metodi / funzioni appaiono imprecisi quando descrivono il risultato.
Ad esempio, la sottostringa di Java per String afferma che "La sottostringa inizia al beginIndex specificato e si estende al carattere all'indice endIndex - 1.". Questo ha senso per tutti i valori 0 < = i < len (string). Non appena usi len (string), comunque, a cosa si riferisce quell'indice? In un linguaggio come C che usa le stringhe C, diventa naturalmente il terminatore nullo che trattiamo come una stringa vuota. Le implementazioni che ho visto in particolare controllano il range degli indici come [0, len (stringa)]. Quando viene specificato un solo argomento, prenderemo la differenza tra l'indice di inizio e la lunghezza della stringa che si risolve in 0 per startIndex = len (stringa).
Sono arrivato a credere che questa sia solo una convenzione inespressa tra le lingue che risalgono alle radici delle stringhe terminate da NULL per agire come stringhe vuote. Qualcuno può gettare un po 'di luce oltre è semplicemente così com'è?