Próbuję monsyfować odniesienia Bibleverse, aby pojedyncze cyfry rozdziały lub wersety mają wiodącą przestrzeń.

Więc "4: 5" staje się "4: 5" i "3:21" staje się "3:21".

Naprawdę mam problemy z pisaniem regexa, proszę o pomoc.

Próbowałem wielu wariantów, ale zasadniczo gotują się do (^ d | d $), (^ d {1} | d {1} $) i (^ [^ 0-9] d | [ ^ 0-9] D $) I wiele kombinacji między nimi

    inRef = inChapter + ':' + inVerse;
    var inReg = /(^[0-9]{1}|[^0-9][0-9]{1}$)/g;     
    inRef = inRef.replace(inReg," $1");
    console.log(inRef);

Allot wyników Dostaję z moich wysiłków przekształcić referencje, takie jak "6:15" w "6: 1 5" lub "6: 1 5"

Z góry dziękuję.

0
Regular Jo 12 sierpień 2014, 22:45

2 odpowiedzi

Najlepsza odpowiedź

Biorąc pod uwagę struny inChapter i inVerse, możesz zrobić coś takiego:

inRef = ("  " + inChapter).slice(-2) + ":" + ("  " + inVerse).slice(-2)

UWAGA Istnieją dwie spacje " " i zakładam inChapter i inVerse są tylko 1 lub 2 cyfry.

Edytuj: Ponieważ potrzebujesz trzech cyfr i zakładam, że wciąż chcesz, abyś włączyć, możesz to zrobić:

var pad = "   ";   // this is now THREE spaces! 
inRef = (pad + inChapter).slice(-pad.length) + ":" + (pad + inVerse).slice(-pad.length)

Więc teraz, jeśli uruchomisz wszystkie swoje inChapter i inVerse

100:100
 20:100
  2:100
100: 10
100:  1
 10: 10
 10:  1
  1:  1
1
Matt Burland 12 sierpień 2014, 19:16

Dlaczego w ogóle regex? Masz już rozdział / werset jako oddzielne dane, zanim połączysz je do formatu x:y, więc wykonaj tam formatowanie, podczas gdy są nadal oddzielne ciągi:

if (inChapter.length == 1) { inChapter = ' ' + inChapter }
inRef = inChapter + ':' + inVerse;

Korzystanie z regexa do tej transformacji Uber-uproszczącej jest podobne do Nukingu miasta, aby uzyskać trochę pyłu z półki zamiast za pomocą Duster Piórko.

3
Marc B 12 sierpień 2014, 18:50