Come convertire / analizzare da String a char in Java?


199

Come posso analizzare un Stringvalore in un chartipo, in Java?

So come farlo per int e raddoppiare (per esempio Integer.parseInt("123")). C'è una classe per archi e chars?


Vuoi analizzare una stringa in un array di caratteri? Sii più specifico.
Zsombor Erdődy-Nagy,


1
Sì, ma non vedo alcun metodo che mi aiuti a cambiare una stringa come "a" in un carattere come "a"
Yokhen,

5
Non penso sia un duplicato. Sto cercando di convertire una sola lettera.
Yokhen,

Risposte:


295

Se la tua stringa contiene esattamente un carattere, il modo più semplice per convertirlo in un carattere è probabilmente chiamare il charAtmetodo:

char c = s.charAt(0);

1
Per più di un carattere: char [] c = s.toCharArray ();

67

È possibile utilizzare la funzione .charAt (int) con Strings per recuperare il valore char in qualsiasi indice. Se si desidera convertire la stringa in un array di caratteri, provare a chiamare .toCharArray () sulla stringa.

String g = "line";
char c = g.charAt(0);  // returns 'l'
char[] c_arr = g.toCharArray(); // returns a length 4 char array ['l','i','n','e']

Bene, vero, anche se stavo cercando di convertire un singolo carattere in una stringa, immagino che potrebbe funzionare anche.
Yokhen,

48

puoi usare questo trucco:

String s = "p";

char c = s.charAt(0);

Ma questo si trasformerà "123"in '1', è quello che stai cercando?
aioobe,

1
Non intendevo usare specificamente "123". Stavo solo usando come esempio. Per char sarebbe un esempio diverso come "p" poiché un char è un singolo carattere, non più caratteri.
Yokhen,

1
la funzione toCharArray () restituisce una matrice di caratteri nel caso in cui si desideri dividere la stringa in caratteri
Genjuro

8

Se la stringa è lunga 1 carattere, basta prendere quel carattere . Se la stringa non è lunga 1 carattere, non può essere analizzata in un carattere.


Forse un trucco, ma può essere fatto. Vedi stackoverflow.com/questions/21813888/build-char-from-string
Damo

La tua affermazione che dice che una stringa più lunga di 1 carattere non può essere analizzata in un numero intero è errata, vedi la mia risposta.
Adam Martinu,

@Adam: la tua risposta è sbagliata, spiegherò in un commento.
Vlad

5
 String string = "This is Yasir Shabbir ";
 for(char ch : string.toCharArray()){

 }

o Se vuoi individualmente, allora puoi

char ch = string.charAt(1);


4

Il modo più semplice per convertire un Stringin un charsta usando charAt():

String stringAns="hello";
char charAns=stringAns.charAt(0);//Gives You 'h'
char charAns=stringAns.charAt(1);//Gives You 'e'
char charAns=stringAns.charAt(2);//Gives You 'l'
char charAns=stringAns.charAt(3);//Gives You 'l'
char charAns=stringAns.charAt(4);//Gives You 'o'
char charAns=stringAns.charAt(5);//Gives You:: Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 5

Ecco uno script completo:

import java.util.Scanner;

class demo {
    String accNo,name,fatherName,motherName;
    int age;
    static double rate=0.25;
    static double balance=1000;
    Scanner scanString=new Scanner(System.in);
    Scanner scanNum=new Scanner(System.in);

    void input()
    {
        System.out.print("Account Number:");
        accNo=scanString.nextLine();
        System.out.print("Name:");
        name=scanString.nextLine();
        System.out.print("Father's Name:");
        fatherName=scanString.nextLine();
        System.out.print("Mother's Name:");
        motherName=scanString.nextLine();
        System.out.print("Age:");
        age=scanNum.nextInt();
        System.out.println();
    }

    void withdraw() {
        System.out.print("How Much:");
        double withdraw=scanNum.nextDouble();
        balance=balance-withdraw;
        if(balance<1000)
        {
            System.out.println("Invalid Data Entry\n Balance below Rs 1000 not allowed");
            System.exit(0);
        }       
    }

    void deposit() {
        System.out.print("How Much:");
        double deposit=scanNum.nextDouble();
        balance=balance+deposit;
    }

    void display() {
        System.out.println("Your  Balnce:Rs "+balance);
    }

    void oneYear() {
        System.out.println("After one year:");
        balance+=balance*rate*0.01;
    }

    public static void main(String args[]) {
        demo d1=new demo();
        d1.input();
        d1.display();
        while(true) {//Withdraw/Deposit
            System.out.println("Withdraw/Deposit Press W/D:");
            String reply1= ((d1.scanString.nextLine()).toLowerCase()).trim();
            char reply=reply1.charAt(0);
            if(reply=='w') {
                d1.withdraw();
            }
            else if(reply=='d') {
                d1.deposit();
            }
            else {
                System.out.println("Invalid Entry");
            }
            //More Manipulation 
            System.out.println("Want More Manipulations: Y/N:");
            String manipulation1= ((d1.scanString.nextLine()).toLowerCase()).trim();

            char manipulation=manipulation1.charAt(0);
            System.out.println(manipulation);

            if(manipulation=='y') { }
            else if(manipulation=='n') {
                break;
            }
            else {
                System.out.println("Invalid Entry");
                break;
            }
        }   

        d1.oneYear();
        d1.display();   
    }
}

4

Potrei essere un po 'in ritardo, ma l'ho trovato utile, capisco la cadena come String e il titolo della colonna di sinistra come Converti in. :-)

AGGIORNAMENTO: Quindi, ho finalmente recuperato la mia password, ho aggiornato con testo copiabile in modo che altri possano semplicemente copiare e incollare come sempre, e per alcuni altri che possono ottenere l'indicizzazione dei dati (se lo fa). :-) Buon novembre Baffi.

Tabella di conversione

double  --> Double.parseDouble(String);
float   --> Float.parseFloat(String);
long    --> Long.parseLong(String);
int     --> Integer.parseInt(String);
char    --> stringGoesHere.charAt(int position);
short   --> Short.parseShort(String);
byte    --> Byte.parseByte(String);
boolean --> Boolean.parseBoolean(String);

4
Perché abbassare i pollici? Questo risponde davvero alla domanda, in modo da poter controllare come analizzare altri tipi
Davide,

4
@Davide Probabilmente perché i post non dovrebbero includere le informazioni importanti come immagine quando possono essere pubblicate come testo. Le immagini non possono essere cercate e copiate / incollate, sono spesso bloccate e non possono essere lette dagli utenti facendo affidamento su screen reader.
Modus Tollens,

Si prega di modificare il tuo post e mostrare il testo vero e proprio, invece di screenshot. Altri non possono copiare e incollare dalle tue immagini. Vedi qui per i dettagli. Grazie.
Tra il

2
Sono d'accordo con la domanda @Davide - "Perché i pollici in giù?". Credo che questo renderà l'utente che ha ottenuto questo per non contribuire con StackOverflow in futuro e credo che non dovrebbe essere così. Dal mio punto di vista il "pollice in giù" non dovrebbe mai essere usato! È negativo nella sua essenza e non apporta alcun valore.
Marco,

Sei sicuro che char --> StringGoesHere.parseFloat(int position);sia corretto? Onestamente non ho controllato, ma sono abbastanza sicuro Stringche non abbia un parseFloatmetodo, e anche se lo fa, non riesco a capire perché sarebbe quello che avresti cercato di fare lì.
BeUndead,

3

Se vuoi analizzare una stringa in un carattere, mentre l'oggetto String rappresenta più di un carattere, devi semplicemente usare la seguente espressione: char c = (char) Integer.parseInt (s) . Dove s è uguale alla stringa che si desidera analizzare. Molte persone dimenticano che i caratteri rappresentano un numero a 16 bit e quindi possono far parte di qualsiasi espressione numerica :)


1
Questo è sbagliato. L'analisi di una stringa in un numero significa che il numero è stato convertito in una stringa e vogliamo ripristinarlo. Esattamente allo stesso modo, l'analisi di un carattere da una stringa significa che il personaggio è stato convertito in una stringa e noi vogliamo che il personaggio torni indietro. L'uso di un numero intermedio non è ciò di cui l'OP ha chiesto.
Vlad

@Vlad Ha chiesto un numero, perché è quello che charè, proprio come inte double. Ha anche dato l'esempio String"123". e chi dice che non puoi convertire a charin a Stringcon una lunghezza maggiore di uno e viceversa? Provalo tu stesso con char c = 123: String.valueOf((int) c).equals("123")ritorni true.
Adam Martinu,

1
Scusa, ma tutto si riduce ai numeri, non è questo il punto della domanda. Puoi dare un'occhiata alla risposta accettata, che esclude chiaramente un intermedio int. Per il vostro esempio, avevi bisogno di getto a int, il che significa che si sta non funziona con l'originale char, ma con una int, che sembra corrispondere in qualche modo a quello originale char.
Vlad

2
import java.io.*;
class ss1 
{
    public static void main(String args[]) 
    {
        String a = new String("sample");
        System.out.println("Result: ");
        for(int i=0;i<a.length();i++)
        {
            System.out.println(a.charAt(i));
        }
    }
}

Per favore aggiungi qualche spiegazione alla tua risposta.
André Kool,

1

Puoi fare quanto segue:

String str = "abcd";
char arr[] = new char[len]; // len is the length of the array
arr = str.toCharArray();

Puoi accorciarlo a un onelinerString str = "abc"; char[] char_str = str.toCharArray();
abhyudayasrinet il

1

Puoi semplicemente usare il toCharArray()per convertire una stringa in array di caratteri:

    Scanner s=new Scanner(System.in);
    System.out.print("Enter some String:");
    String str=s.nextLine();
    char a[]=str.toCharArray();

0

Un modo di saggio:

public class CharToInt{  
public static void main(String[] poo){  
String ss="toyota";
for(int i=0;i<ss.length();i++)
  {
     char c = ss.charAt(i); 
    // int a=c;  
     System.out.println(c); } } 
} 

Per Output vedi questo link: clicca qui

Grazie :-)


0

È possibile utilizzare la funzione .charAt (int) con Strings per recuperare il valore char in qualsiasi indice. Se si desidera convertire la stringa in un array di caratteri, provare a chiamare .toCharArray () sulla stringa. Se la stringa ha una lunghezza di 1 carattere, basta prendere quel carattere chiamando .charAt (0) (o .First () in C #).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.