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ę.
2 odpowiedzi
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
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.