Wie konvertiere / parse ich von String nach char in Java?

199

Wie analysiere ich einen StringWert charin Java zu einem Typ?

Ich weiß, wie man es macht, um int und double (zum Beispiel Integer.parseInt("123")). Gibt es eine Klasse für Streicher und Zeichen?

Yokhen
quelle
Sie möchten einen String in ein char-Array analysieren? Bitte sei spezifischer.
Zsombor Erdődy-Nagy
mögliches Duplikat von Wie kann ich einen String in ein char-Array konvertieren?
John Flatness
1
Ja, aber ich sehe keine Methode darin, die mir hilft, einen String wie "a" in ein
Zeichen
5
Ich denke nicht, dass es ein Duplikat ist. Ich versuche nur einen einzelnen Buchstaben umzuwandeln.
Yokhen

Antworten:

295

Wenn Ihre Zeichenfolge genau ein Zeichen enthält, können Sie sie am einfachsten in ein Zeichen konvertieren, indem Sie die folgende charAtMethode aufrufen :

char c = s.charAt(0);
Mark Byers
quelle
1
Für mehr als ein Zeichen: char [] c = s.toCharArray ();
67

Sie können die Funktion .charAt (int) mit Strings verwenden, um den Zeichenwert an einem beliebigen Index abzurufen. Wenn Sie den String in ein char-Array konvertieren möchten, rufen Sie .toCharArray () für den String auf.

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']
Gaʀʀʏ
quelle
Nun, wahr, obwohl ich versucht habe, ein einzelnes Zeichen in eine Zeichenfolge umzuwandeln, könnte das auch funktionieren.
Yokhen
48

Sie können diesen Trick verwenden:

String s = "p";

char c = s.charAt(0);
Genjuro
quelle
Aber das wird sich "123"in etwas verwandeln '1', ist es das, wonach Sie suchen?
Aioobe
1
Ich wollte nicht speziell "123" verwenden. Ich habe nur als Beispiel verwendet. Für char wäre es ein anderes Beispiel wie "p", da ein char ein einzelnes Zeichen ist, nicht mehrere.
Yokhen
1
Die Funktion toCharArray () gibt ein Array von Zeichen zurück, falls Sie Ihren String in Zeichen
aufteilen
8

Wenn die Zeichenfolge 1 Zeichen lang ist, nehmen Sie einfach dieses Zeichen . Wenn die Zeichenfolge nicht 1 Zeichen lang ist, kann sie nicht in ein Zeichen analysiert werden.

Vlad
quelle
Vielleicht ein Hack, kann aber gemacht werden. Siehe stackoverflow.com/questions/21813888/build-char-from-string
Damo
Ihre Aussage, dass eine Zeichenfolge, die länger als 1 Zeichen ist, nicht auf eine Ganzzahl analysiert werden kann, ist falsch, siehe meine Antwort.
Adam Martinu
@Adam: Deine Antwort ist falsch, werde ich in einem Kommentar erklären.
Vlad
5
 String string = "This is Yasir Shabbir ";
 for(char ch : string.toCharArray()){

 }

oder Wenn Sie individuell möchten, können Sie als

char ch = string.charAt(1);
Yasir Shabbir Choudhary
quelle
4

Der einfachste Weg, a Stringin a umzuwandeln , charist 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

Hier ist ein vollständiges Skript:

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();   
    }
}
Isabella Ingenieur
quelle
4

Ich bin vielleicht etwas spät dran, aber ich fand das nützlich, verstehe Kadena als String und den Titel der linken Spalte als Konvertieren in. :-)

UPDATE: Also habe ich endlich mein Passwort zurückbekommen, ich habe es mit kopierbarem Text aktualisiert, damit andere wie immer einfach kopieren und einfügen können, und für einige andere, die eine Indizierung der Daten erhalten können (falls dies der Fall ist). :-) Fröhlichen November Schnurrbart.

Umrechnungstabelle

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);
Hikhuj
quelle
4
Warum Daumen runter? Dies beantwortet wirklich die Frage, so dass Sie überprüfen können, wie in anderen Typen zu analysieren
Davide
4
@Davide Wahrscheinlich, weil Beiträge die wichtigen Informationen nicht als Bild enthalten sollten, wenn sie als Text veröffentlicht werden können. Bilder können nicht gesucht und kopiert / eingefügt werden, werden häufig blockiert und können von Benutzern, die sich auf Bildschirmlesegeräte verlassen, nicht gelesen werden.
Modus Tollens
Bitte bearbeiten Sie Ihren Beitrag und zeigen Sie den tatsächlichen Text anstelle von Screenshots. Andere können Ihre Bilder nicht kopieren und einfügen. Siehe hier für Details. Danke dir.
Pang
2
Ich stimme der @ David-Frage zu - "Warum Daumen runter?". Ich glaube, dass dies den Benutzer, der dies erhalten hat, dazu bringen wird, in Zukunft nicht mehr zum Stackoverflow beizutragen, und ich glaube, dass dies nicht der Fall sein sollte. Aus meiner Sicht sollten "Daumen runter" niemals verwendet werden! Es ist in seiner Essenz negativ und bringt überhaupt keinen Wert.
Marco
Bist du sicher, dass char --> StringGoesHere.parseFloat(int position);das richtig ist? Ehrlich gesagt habe ich nicht nachgesehen, aber ich bin mir ziemlich sicher, dass Stringes keine parseFloatMethode gibt, und selbst wenn dies der Fall ist, kann ich nicht verstehen, warum Sie das dort versuchen würden.
BeUndead
3

Wenn Sie einen String in ein Zeichen analysieren möchten, während das String-Objekt mehr als ein Zeichen darstellt, verwenden Sie einfach den folgenden Ausdruck: char c = (char) Integer.parseInt (s) . Wobei s gleich dem String ist, den Sie analysieren möchten. Die meisten Leute vergessen, dass Zeichen eine 16-Bit-Zahl darstellen und somit Teil eines beliebigen numerischen Ausdrucks sein können :)

Adam Martinu
quelle
1
Das ist falsch. Das Parsen einer Zeichenfolge in eine Zahl bedeutet, dass die Zahl in eine Zeichenfolge konvertiert wurde, und wir möchten die Zahl zurückerhalten. Genau so bedeutet das Parsen eines Zeichens aus einer Zeichenfolge, dass das Zeichen in eine Zeichenfolge konvertiert wurde und wir das Zeichen zurückhaben möchten. Die Verwendung einer Zwischennummer ist nicht das, wonach das OP gefragt hat.
Vlad
@Vlad Er hat nach einer Nummer gefragt, denn so charist a, genau wie intund double. Er gab sogar das Beispiel String"123". und wer sagt, dass man a nicht charin a Stringmit einer Länge größer als eins konvertieren kann und zurück? Probieren Sie es selbst aus mit char c = 123: String.valueOf((int) c).equals("123")kehrt zurück true.
Adam Martinu
1
Sorry, aber alles läuft auf die Zahlen hinaus, das ist nicht der Punkt der Frage. Sie können sich die akzeptierte Antwort ansehen, die ein Zwischenprodukt eindeutig ausschließt int. Für Ihr Beispiel müssen Sie zu Guss zuint , was bedeutet , dass Sie nicht mit dem Original arbeiten char, aber mit ein int, die irgendwie passiert mit dem Original entsprechen 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));
        }
    }
}
user6307216
quelle
Bitte fügen Sie Ihrer Antwort eine Erklärung hinzu.
André Kool
1

Sie können Folgendes tun:

String str = "abcd";
char arr[] = new char[len]; // len is the length of the array
arr = str.toCharArray();
Santosh Kulkarni
quelle
Sie können dies zu einem Oneliner verkürzenString str = "abc"; char[] char_str = str.toCharArray();
abhyudayasrinet
1

Sie können einfach die verwenden toCharArray(), um eine Zeichenfolge in ein char-Array zu konvertieren:

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

Ein Essay Weg:

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); } } 
} 

Für die Ausgabe siehe diesen Link: Klicken Sie hier

Vielen Dank :-)

Shiva Nandam Sirmarigari
quelle
0

Sie können die Funktion .charAt (int) mit Strings verwenden, um den Zeichenwert an einem beliebigen Index abzurufen. Wenn Sie den String in ein char-Array konvertieren möchten, rufen Sie .toCharArray () für den String auf. Wenn die Zeichenfolge 1 Zeichen lang ist, nehmen Sie dieses Zeichen einfach, indem Sie .charAt (0) (oder .First () in C #) aufrufen.

Mayer Spitzer
quelle