• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

wyrażenia regularne

Object Storage Arubacloud
0 głosów
317 wizyt
pytanie zadane 10 czerwca 2023 w JavaScript przez andrzej.polak Nowicjusz (220 p.)
function skipSpace(string) {
    let first = string.search(/\S/);
    console.log(first)
    if (first == -1) return "";
    return string.slice(first);
}

dlaczego first zawsze zwraca 0 (nieważne co bym wpisał w zmienną string)? 

2 odpowiedzi

+3 głosów
odpowiedź 10 czerwca 2023 przez Comandeer Guru (603,480 p.)
wybrane 11 czerwca 2023 przez andrzej.polak
 
Najlepsza

Bo search() zwraca indeks znaku, w którym zaczyna się dopasowanie. A że szukasz \S, czyli dowolnego znaku, który nie jest spacją, to jakakolwiek literka na początku stringu będzie się łapała. Stąd dostajesz 0.

Co dokładnie ma robić ta funkcja? Bo jeśli dobrze rozumuję, to można ją zastąpić przez split() – string.split( /\s/ )

komentarz 10 czerwca 2023 przez andrzej.polak Nowicjusz (220 p.)

to przykład z książki 

function parseExpression(program) {
    program = skipSpace(program);
    let match, expr;
    if (match = /^"([^"]*)"/.exec(program)) {
        expr = {type: "value", value: match[1]}
    }   else if (match = /^\d+\b/.exec(program)) {
        expr = {type: "value", value: Number(match[0])};
    }   else if (match = /^[^\s(),#"]+/.exec(program)) {
        expr = {type: "word", name: match[0]};
    }   else {throw new SyntaxError("Nieznana składania: " + program);
}

 return parseApply(expr, program.slice(match[0].length));
}

function skipSpace(string) {
    let first = string.search(/\S/);
    if (first == -1) return "";
    return string.slice(first);
}

funkcja skipSpace ma za zadanie usuwać spacje z początku i końca łańcucha. jestem na etapie analizy tego kodu 

komentarz 10 czerwca 2023 przez Comandeer Guru (603,480 p.)

Hmm, co to za książka? Bo od usuwania spacji z początku i końca ciągu jest trim(). Ta obecna wersja faktycznie może działać (ucina ciąg przed pierwszym znakiem, który nie jest spacją), niemniej jest IMO przekombinowany.

komentarz 10 czerwca 2023 przez andrzej.polak Nowicjusz (220 p.)
Jak zrozumieć javascript wydanie III. Stanowczo odradzam. Wiele rzeczy pozostaje bez wyjaśnienia przedstawiony kod nierzadko zawiera błędy już nie mówiąc o tym że praktycznie zawsze trzeba go analizować samodzielnie. Często występowały nowe metody o których nie było żadnej wzmianki w tekście. Książka rzadko wyjaśnia do czego służy dany kod, a co dopiero jak działa. Męczę się jeszcze z nią tylko dlatego że chce skończyć ten dział.
komentarz 11 czerwca 2023 przez VBService Ekspert (254,880 p.)
edycja 11 czerwca 2023 przez VBService

@andrzej.polak, 

funkcja skipSpace ma za zadanie usuwać spacje z początku i końca łańcucha

niestety nie usuwa z końca, tak jak już wspomniał @Comandeer

ucina ciąg przed pierwszym znakiem, który nie jest spacją

 

jeżeli w ramach treningu nie chcesz używać trim(), to proponuje z sugerowanym wyżej string.split( /\s/ ) użyć filter(Boolean)

[ on-line ]

return string.split(/\s/).filter(Boolean).join(' ');

 

0 głosów
odpowiedź 12 czerwca 2023 przez infinityhost Użytkownik (780 p.)
var tekst = " Ola ma kota";

var drugi_tekst = tekst.replaceAll(" ","");

var znak = drugi_tekst[0];

A jak chcesz podzielić tekst to php i explode() utworzy Ci tablice wyrazów.

Nie ograniczaj się do jednego języka, zacznij od C.
komentarz 12 czerwca 2023 przez VBService Ekspert (254,880 p.)
edycja 12 czerwca 2023 przez VBService

jak chcesz podzielić tekst to php i explode() 

 Nie ograniczaj się do jednego języka, zacznij od C

ale, OP uczy się javascript, nie prosi o pomoc z php wink

nie pyta o zmianę języka na inny

omawiana jest

funkcja skipSpace ma za zadanie usuwać spacje z początku i końca łańcucha.

podany przez Ciebie przykład usuwa wszystkie spacje z tekstu i zwraca pierwszą literę, co jest kompletnie nie na temat w tym kontekście.

const tekst = " Ola ma kota";
const drugi_tekst = tekst.replaceAll(" ",""); // sugerowana nazwa: tekst_bez_spacji ;-)
const znak = drugi_tekst[0];

console.log(tekst, drugi_tekst, znak)

 


 

BTW, odpowiednikiem explode (php) może być np. String.split(), co za tym idzie OP może w dalszym ciągu "używać" javascript bez konieczności ... smiley

A jak chcesz podzielić tekst to php i explode() ...

komentarz 12 czerwca 2023 przez infinityhost Użytkownik (780 p.)
edycja 12 czerwca 2023 przez infinityhost

Pytanie jest zadane tak "dlaczego first zawsze zwraca 0 (nieważne co bym wpisał w zmienną string)? ". To i odpowiedź jest "poważna".wink

Chyba oczekiwałem pytania w stylu "chcę osiągnąć to i to".

komentarz 12 czerwca 2023 przez Comandeer Guru (603,480 p.)

Jak chcesz tak poważnie odpowiadać, to może lepiej wgl nie odpowiadaj…

komentarz 12 czerwca 2023 przez infinityhost Użytkownik (780 p.)
Słyszałeś taki tekst "wymagajcie od siebie nawet wtedy kiedy inni od was nie wymagają"?  To co zrobiłem było chyba mega subtelne. Ten chłopak nie musi precyzyjnie artykułować swoich potrzeb, jego życie co nie?
komentarz 12 czerwca 2023 przez Comandeer Guru (603,480 p.)

Skoro już idziemy w tego typu cytaty:

Czemu to widzisz drzazgę w oku swego brata, a belki we własnym oku nie dostrzegasz?

 

komentarz 12 czerwca 2023 przez VBService Ekspert (254,880 p.)

To co zrobiłem było chyba mega subtelne

@infinityhost, co nie zmienia faktu, że twoja odpowiedź jest lekko mówiąc nie na temat, przeczytaj odpowiedź podaną przez @Comandeer-a i komentarze pod nią, gdzie OP doprecyzowuje swoje pytanie.

 

Ten chłopak nie musi precyzyjnie artykułować swoich potrzeb, jego życie co nie?

przestudiuj kilkanaście wpisów (pytań) na tym forum, a zobaczysz, że dość częstą praktyką jest w komentarzach dopytywanie OP-ów o szczegóły, które umożliwiają udzielenie pomocy i nie chodzi tutaj o

artykułować swoich potrzeb

tylko osoby "początkujące" w danym temacie, jak napotykają na jakiś "problem", często nie potrafią go dobrze opisać w swojej prośbie (w zadawanym pytaniu) o pomoc.

komentarz 12 czerwca 2023 przez infinityhost Użytkownik (780 p.)
Wyciągnie jakieś wnioski z mojej odpowiedzi czy nie? W pracy obrazi się i zniechęci? Jak nie myślisz o nim jako o przyszłym pracowniku, to nie traktujesz go poważnie uważam. Ja jak otrzymam od AI niewłaściwą odpowiedź, inaczej formułuję wypowiedź, tak się uczę.
komentarz 12 czerwca 2023 przez VBService Ekspert (254,880 p.)

Jakie wnioski ma wyciągnąć z podanego przez Ciebie przykładu?

var tekst = " Ola ma kota";
var drugi_tekst = tekst.replaceAll(" ","");
var znak = drugi_tekst[0];

OP pyta "głównie" o tą linię

let first = string.search(/\S/);

 

dlaczego first zawsze zwraca 0 (nieważne co bym wpisał w zmienną string)? 

 

sprawdź najpierw jak "działa" string.search(), bo tu wcale nie chodzi o

var znak = drugi_tekst[0];

ani o

var drugi_tekst = tekst.replaceAll(" ","");

 

 

BTW,

Ja jak otrzymam od AI niewłaściwą odpowiedź,

skoro znasz prawidłową odpowiedź to po co się pytasz AI.  wink

Podobne pytania

0 głosów
1 odpowiedź 101 wizyt
0 głosów
1 odpowiedź 299 wizyt
pytanie zadane 22 maja 2016 w JavaScript przez remo82 Użytkownik (560 p.)
0 głosów
1 odpowiedź 344 wizyt
pytanie zadane 9 stycznia 2022 w Matematyka, fizyka, logika przez dark41 Użytkownik (760 p.)

92,761 zapytań

141,685 odpowiedzi

320,483 komentarzy

62,105 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...