Ciao ragazzi sono nuovo e volevo chiedere un vostro parere riguardo a un
codice che ho scritto.Il codice è il seguente:
arr=IO.readlines(“prova.txt”)
puts"#{arr[1]}"
case arr[0]
when “ciao come va”
puts “ciao”
else
puts “niente”
end
Nel file prova.txt c’è scritto:
ciao come va
tutto bene
E’ un esempio stupido ma non riesco a fare una cosa.Quello che vorrei
ottenere è che facesse un confronto con il primo elemento dell’array(nel
quale è stato inserito la prima riga del file txt) e che se il confronto
avesse esito positivo,venga digitato ciao.Tuttavia quello che mi viene
digitato è:
tutto bene
niente
è come se non trovasse nulla nell’array e quindi mi dice che non c’è
niente.
chomp è un metodo di String che per l’appunto rimuove gli eventuali
terminatori.
Paolo
Stefano De nigris wrote:
Ciao ragazzi sono nuovo e volevo chiedere un vostro parere riguardo a un
codice che ho scritto.Il codice è il seguente:
arr=IO.readlines(“prova.txt”)
puts"#{arr[1]}"
case arr[0]
when “ciao come va”
puts “ciao”
else
puts “niente”
end
Nel file prova.txt c’è scritto:
ciao come va
tutto bene
E’ un esempio stupido ma non riesco a fare una cosa.Quello che vorrei
ottenere è che facesse un confronto con il primo elemento dell’array(nel
quale è stato inserito la prima riga del file txt) e che se il confronto
avesse esito positivo,venga digitato ciao.Tuttavia quello che mi viene
digitato è:
tutto bene
niente
è come se non trovasse nulla nell’array e quindi mi dice che non c’è
niente.
sono poco esperto ma mi pare di capire che stai tentando di accedere a
un elemento di array che non esiste;
se val = primariga.size vale 10, questo vuol dire che l’array ha 10
elementi, da primariga[0] a primariga[9]
chiedendo primariga[val] stai chiedendo primariga[10], che non esiste
prova con primariga[last] o primariga[-1]
Stefano De nigris wrote:
Ragazzi ho un altro problema.Ho scritto il seguente codice:
val=primariga.size
sost=primariga[val].split(/\s/)
puts “#{sost}”
e vorrei che “sost” abbia l’ultimo valore dell’array primariga.Tuttavia
mi esce un errore che non riesco a capire:
private method `split’ called for nil:NilClass (NoMethodError)
Ragazzi ho di nuovo un problema banale,ma nonostante cio non riesco a
risolverlo.Mi sapreste dire il codice che deve usare per poter far fare
la somma tra due numeri che inserisco io nella console.
Ve l’avevo detto che era banale… :D.
Il giorno 10/gen/09, alle ore 18:01, Stefano De nigris ha scritto:
Ragazzi ho di nuovo un problema banale,ma nonostante cio non riesco a
risolverlo.Mi sapreste dire il codice che deve usare per poter far
fare
la somma tra due numeri che inserisco io nella console.
Ve l’avevo detto che era banale… :D.
Ragazzi ho di nuovo un problema banale,ma nonostante cio non riesco a
risolverlo.Mi sapreste dire il codice che deve usare per poter far fare
la somma tra due numeri che inserisco io nella console.
Ve l’avevo detto che era banale… :D.
fra ignoranti ci si capisce meglio ricordati sempre che i dati in
input da console sono sempre acquisiti con un newline in fondo, quindi
il seguente codice non funziona
sull’input da console, in tal caso, bosogna fare la chomp, come segue:
ragazzi mi sto arrabbiando con nua stringa di codice che non riesco a
capire il xke non vuole funzionare correttamente.La stringa è la
seguente:
elementi=primariga.to_s
if elementi.include? “=” && “:”
duepunti=elementi.gsub(/[:]/,’’).chop
puts “#{duepunti}”
end
dove primariga va a leggere le frasi su un file txt,tramite
readlines.Quello che voglio che verifichi se all’interno della stringa
ci siano gli elementi = e : e se è vero mi deve stampare lo stesso
elemento,pero senza i due punti.
Ma quello che accade è diverso…o meglio mi stampa a video quello che
io ho detto,in piu stampa anche quelle righe dove ci sono solo i due
punti.
E’ come se capisce che deve vedere entrambi.Come posso risolverlo???
elementi=primariga.to_s
if elementi.include? “=” && “:”
duepunti=elementi.gsub(/[:]/,’’).chop
puts “#{duepunti}”
end
se i due elementi devono essere in sequenza, ovvero prima = e poi :
eventualmente non consecutivi, una prima possibile soluzione, anche se
assai poco elegante, è:
elementi = “AAABBB = UUUU : iiiFF”
riga = elementi
if !(riga.match ‘=’).nil?
riga = $’
if !(riga.match ‘:’).nil?
duepunti=elementi.gsub(/[:]/,’’).chop
puts “#{duepunti}”
end
end
$’ è il testo che segue il testo trovato dalla match
Luigi ho provato come dici tu,ma fa lo stesso…fra poco faro volare un
pc per la prima volta al mondo(anche se mi viene i dubbio che qualcuno
lo abbia gia fatto).
Il fatto è che l’and,cioè && non gli dice che devono esserci entrambi i
caratteri,capito?Forse sbaglio nel scrivere il codice???
Luigi ho provato come dici tu,ma fa lo stesso…fra poco faro volare un
pc per la prima volta al mondo(anche se mi viene i dubbio che qualcuno
lo abbia gia fatto).
Il fatto è che l’and,cioè&& non gli dice che devono esserci entrambi i
caratteri,capito?Forse sbaglio nel scrivere il codice???
Forse?? Non voglio essere cattivo, ma tra la possibilità che stia
sbagliando Ruby e quella che stai sbagliando tu, mi sembra che si possa
scommettere 1 a infinito