Chirurgia endoscopică a hipofizei
"Standardul de aur" în chirurgia hipofizară îl reprezintă endoscopia transnazală transsfenoidală. Echipa NeuroHope este antrenată în unul din cele mai mari centre de chirurgie a hipofizei din Europa, Spitalul Foch din Paris, centrul în care a fost introdus pentru prima dată endoscopul în chirurgia transnazală a hipofizei, de către neurochirurgul francez Guiot. Pe lângă tumorile cu origine hipofizară, prin tehnicile endoscopice transnazale pot fi abordate numeroase alte patologii neurochirurgicale. www.neurohope.ro |
Verificare ultimul caracter dintr-un String
#1
Posted 26 June 2017 - 09:29
Salut,
Se poate verifica daca un String se termina cu un anumit caracter? Am incercat cu endsWith dar accepta doar alt string nu un caracter. Vreau sa verific daca un nume se termina cu 'a' sa imi afiseze mesajul ca acel nume este de "Fata" else "Baiat". Multumesc |
#2
Posted 26 June 2017 - 09:34
"a" - este un string care are doar un caracter, poate fi folosit cu endsWith().
Alte soluții ar mai fi charAt() + length() sau lastIndexOf() + length(), dar endsWith() e mai clar. Edited by tavitu, 26 June 2017 - 09:38. |
#3
Posted 26 June 2017 - 09:40
Si daca numele este Luca?
Sau Carmen? Edited by danvlas, 26 June 2017 - 09:40. |
#4
Posted 26 June 2017 - 09:45
Poate sa construiască un set, cu nume de băieți care se termină în 'a' și un set cu nume de fete care nu se termină în 'a'. Verifică mai întâi dacă un nume primit e într-unul dintre set-uri, dacă e, știe deja răspunsul, dacă nu, verifcă dacă se termină în 'a' și din nou află răspunsul.
Mă gândesc că numărul de nume de băieti care se termină în 'a', respectiv, numărul de nume de fete care nu se termină în 'a' este scăzut și deci merge ceva de genul. |
#5
Posted 26 June 2017 - 10:29
Nu e fezabil. Numele unguresti, turcesti, japoneze, africane samd nu respecta regula asta, deci trebuie gasita alta solutie. Chiar vorbind numai de Romania, exista foarte multe etnii, care pot da peste cap o logica de acest fel. Unguri, rusi, evrei, greci, turci, tatari, aromani, armeni si altele, cine stie toate prenumele posibile?
|
#7
Posted 26 June 2017 - 10:43
Dacă e să luăm așa, în lumea reală, e inutil un astfel de program, există nume unisex la care nu ai ce să le faci, iar în funcție de nevoile clientului pot fi mai mult de două sexe (M, F, secret, etc), dar pentru un începător în Java cred că ce am zis eu cu set-uri este un bun exercițiu.
|
#8
Posted 26 June 2017 - 11:17
Ca exercitiu, da. Dar nu se poate folosi ca solutie de stabilire a sexului unei persoane intr-o aplicatie reala. Ar fi destul de jenant sa-i propui lui Horia un costum de baie din doua piese sau sa-i amintesti lui Irene sa-si controleze prostata
|
#9
Posted 26 June 2017 - 21:20
tavitu, on 26 iunie 2017 - 10:43, said:
Dacă e să luăm așa, în lumea reală, e inutil un astfel de program, există nume unisex la care nu ai ce să le faci, iar în funcție de nevoile clientului pot fi mai mult de două sexe (M, F, secret, etc), |
#10
Posted 02 July 2017 - 14:52
"abc".endsWith(String.valueOf('a');true String.valueOf(ceva) "converteste" aproape orice ar fi acel ceva in string (de fapt creeaza un string nou si-l returneaza) insa e mai simpla si mai eficienta testarea ultimului caracter cu str.charAt(str.length() -1 ) == 'a'(str e variabila de tip String) |
|
#11
Posted 16 July 2017 - 09:30
cosmin35, on 26 iunie 2017 - 09:29, said:
Salut, Se poate verifica daca un String se termina cu un anumit caracter? Am incercat cu endsWith dar accepta doar alt string nu un caracter. Vreau sa verific daca un nume se termina cu 'a' sa imi afiseze mesajul ca acel nume este de "Fata" else "Baiat". Multumesc String str = "strigul tau mirific si nemaipomenit"; if ( str.length >1) { String result = str + " este nume de " + (str.toCharArray()[str.length-1] == 'a' ) ? "fata" : "baiat"; }else { println("error! stringul meu mirific si nemaipomenit este prea mic"; } Edited by lightpoint, 16 July 2017 - 09:48. |
#12
Posted 16 July 2017 - 10:02
IllusiveMan, on 02 iulie 2017 - 14:52, said: "abc".endsWith(String.valueOf('a');true endsWith foloseste regex sub capota. De asemenea daca ii dai endsWith(""), da true. De asemeni sa stii ca poti sa-ti faci propria implementare a lui endsWith(....) fara regex si caruia daca ii dai un sir vid nu returneaza true ( ca efect secundar al regexului folosit mai sus ) tavitu, on 26 iunie 2017 - 10:43, said:
Dacă e să luăm așa, în lumea reală, e inutil danvlas, on 26 iunie 2017 - 09:40, said:
Sau Carmen? Edited by lightpoint, 16 July 2017 - 10:28. |
#13
Posted 16 July 2017 - 10:33
PS: pt initiator:
daca vrei sa folosesti solutia data de mine pentru zeci/sute de mii sau milioane de inregistrari, atunci in locul concatenarii cu "+" a stringurilor foloseste un StringBuilder |
#14
Posted 16 July 2017 - 12:41
lightpoint, on 16 iulie 2017 - 10:02, said:
Asta este varianta scolareasca sau acolo unde userul nostru verifica cel mult sute de linii deoarece endsWith foloseste regex sub capota. De asemenea daca ii dai endsWith(""), da true. Eu văd că nu folosește regex http://grepcode.com/...va.lang.String) Soluția propusă face o copie completă a fiecărui string într-un array de char doar ca să poți folosi indexarea (array[index]) pentru a accesa un singur caracter. Pentru cineva care se plânge de eficiență, soluția oferită este destul de ineficientă. Mai ales că există funcția charAt(). lightpoint, on 16 iulie 2017 - 10:02, said:
solutie data de tine cu seturi. tocmai i-a schimbat sexul. Mai rar un astfel de program: daca nu este fata desi e fata , atunci trebuie sa nu mai fie fata. set nume_baieti_cu_a = {Luca, ...} set nume_fete_fara_a = {Carmen, ...} daca nume_test in nume_baieti_cu_a intoarce baiat daca nume_test in nume_fete_fara_a intoarce fata daca nume_test se termina in 'a' intoarce fata altfel intoarce baiat A fost o soluție foarte simplă pentru un începător în Java. |
#15
Posted 16 July 2017 - 13:12
lightpoint, on 16 iulie 2017 - 10:02, said:
Asta este varianta scolareasca sau acolo unde userul nostru verifica cel mult sute de linii lightpoint, on 16 iulie 2017 - 10:02, said:
deoarece endsWith foloseste regex sub capota. De asemenea daca ii dai endsWith(""), da true. De asemeni sa stii ca poti sa-ti faci propria implementare a lui endsWith(....) fara regex si caruia daca ii dai un sir vid nu returneaza true ( ca efect secundar al regexului folosit mai sus ) Varianta cea mai eficienta cea cu charAt(str.length() - 1), nicidecum prin crearea unui nou array de caractere, care invoca System.arraycopy Observ ca iti place sa contrazici sau sa dai sfaturi pe multe topicuri, nu de putine ori intepand alti participanti la discutie, fara insa sa ai cunostinte temeinice. edit: n-am observat ca a postat si tavitu cam acelasi lucru Edited by IllusiveMan, 16 July 2017 - 13:25. |
|
#16
Posted 16 July 2017 - 13:42
@lightpoint ce ai dat tu e cea mai slaba solutie din cele postate aici
E nasol in schimb ca ai impresia ca e cea mai buna |
#17
Posted 17 July 2017 - 12:31
tavitu, on 16 iulie 2017 - 12:41, said:
Citește cu mai multă atenție. set nume_baieti_cu_a = {Luca, ...} set nume_fete_fara_a = {Carmen, ...} daca nume_test in nume_baieti_cu_a intoarce baiat daca nume_test in nume_fete_fara_a intoarce fata daca nume_test se termina in 'a' intoarce fata altfel intoarce baiat A fost o soluție foarte simplă pentru un începător în Java. prelucrarea datelor) in cazul unor amarate de charuri. Aici facem selectie de un element dintr-un array de char-uri. Cand avem stocare folosim array-uri, cand avem prelucreare de date folosim liste. Intr-o bucla mare de date, folosirea listelor trebuie justificata pentru ca mananca resurse. IllusiveMan, on 16 iulie 2017 - 13:12, said:
E varianta cu care userul a pornit si parea impotmolit. Fals! endsWith nu foloseste niciun regex, ci apeleaza startsWith cu string-ul si un offset(care la randul sau nu foloseste regex)! Da, merge si endsWith("a") bine mersi. Quote
Varianta cea mai eficienta cea cu charAt(str.length() - 1), public char charAt(int index) { if ((index < 0) || (index >= value.length)) { throw new StringIndexOutOfBoundsException(index); } return value[index]; }Inn java, sa folosesti o metoda care arunca posibile exceptii intr-o bucla la fel de rau ca regexp-patternurile folosite intr-o bucla. Quote
nicidecum prin crearea unui nou array de caractere, care invoca System.arraycopy codul sursa al metodei startsWith din clasa String: public boolean startsWith(String prefix, int toffset) { char ta[] = value; // <-atentie la linia asta int to = toffset; char pa[] = prefix.value; // <- si la linia asta int po = 0; int pc = prefix.value.length; // Note: toffset might be near -1>>>1. if ((toffset < 0) || (toffset > value.length - pc)) { return false; } while (--pc >= 0) { if (ta[to++] != pa[po++]) { return false; } } return true; } Constructorul clasei String pe care il apeleaza JVM(vezi la sfarsitul postului de ce si cum ) : public String(char[] value) { this.value = Arrays.copyOf(value, value.length); } public static char[] copyOf(char[] original, int newLength) { char[] copy = new char[newLength]; System.arraycopy(original, 0, copy, 0,Math.min(original.length, newLength)); // ia uite pe cine avem noi aici return copy; }Ai inteles ceva ? Presupunand ca nu , atunci mai este nevoie sa-ti zic ca daca in java scriu String tavitu = "habar n-are", JVM-ul vine si face asa: char[] a = { 'h','a', 'b', 'a', 'r',' ',' n',' -',' a', 'r', 'e'} si apoi apelaza clasa String cu constructorul avand signatura String(char[]) care, conform codului de mai sus, apeleaza System.arraycopy Edited by lightpoint, 17 July 2017 - 12:42. |
#18
Posted 17 July 2017 - 12:54
Anunturi
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users