Bagaimana cara mengonversi / mem-parsing dari String ke char di java?

199

Bagaimana cara mem-parsing Stringnilai ke chartipe, di Java?

Saya tahu bagaimana melakukannya untuk int dan gandakan (misalnya Integer.parseInt("123")). Apakah ada kelas untuk Strings and Chars?

Yokhen
sumber
Anda ingin mengurai String menjadi array char? Harap lebih spesifik.
Zsombor Erdődy-Nagy
kemungkinan duplikat dari Bagaimana saya bisa mengonversi String ke array char?
John Flatness
1
Ya tapi saya tidak melihat metode apa pun di dalamnya yang akan membantu saya mengubah sebuah String seperti "a" menjadi char seperti 'a'
Yokhen
5
Saya rasa ini bukan duplikat. Saya mencoba mengubah satu huruf saja.
Yokhen

Jawaban:

295

Jika string Anda berisi tepat satu karakter, cara paling sederhana untuk mengubahnya menjadi karakter mungkin dengan memanggil charAtmetode:

char c = s.charAt(0);
Mark Byers
sumber
1
Untuk lebih dari satu karakter: char [] c = s.toCharArray ();
67

Anda dapat menggunakan fungsi .charAt (int) dengan Strings untuk mengambil nilai char pada indeks apa pun. Jika Anda ingin mengonversi String ke array char, coba panggil .toCharArray () pada String.

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ʀʀʏ
sumber
Ya benar, walaupun saya berusaha untuk mengubah satu karakter menjadi satu string, saya kira itu bisa berhasil juga.
Yokhen
48

Anda dapat menggunakan trik ini:

String s = "p";

char c = s.charAt(0);
Genjuro
sumber
Tapi itu akan berubah "123" menjadi '1', apakah itu yang Anda cari?
aioobe
1
Saya tidak bermaksud khusus menggunakan "123". Saya hanya menggunakan sebagai contoh. Untuk char, ini akan menjadi contoh berbeda seperti "p" karena char adalah karakter tunggal, bukan karakter ganda.
Yokhen
1
fungsi toCharArray () mengembalikan array karakter jika Anda ingin membagi string Anda menjadi karakter
Genjuro
8

Jika string memiliki 1 karakter, ambil saja karakter itu . Jika string tidak sepanjang 1 karakter, string tidak dapat diuraikan menjadi karakter.

Vlad
sumber
Mungkin peretasan, tetapi bisa dilakukan. Lihat stackoverflow.com/questions/21813888/build-char-from-string
Damo
Pernyataan Anda yang mengatakan bahwa string yang lebih panjang dari 1 karakter tidak dapat diuraikan ke integer salah, lihat jawaban saya.
Adam Martinu
@ Adam: Jawaban Anda salah, saya akan jelaskan dalam komentar.
Vlad
5
 String string = "This is Yasir Shabbir ";
 for(char ch : string.toCharArray()){

 }

atau Jika Anda ingin secara individual maka Anda dapat

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

Cara termudah untuk mengonversi a Stringke charmenggunakan adalah 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

Berikut ini skrip lengkapnya:

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();   
    }
}
Insinyur Isabella
sumber
4

Saya mungkin sedikit terlambat tetapi saya menemukan ini berguna, memahami cadena sebagai String, dan judul kolom kiri sebagai Convert to. :-)

PEMBARUAN: Jadi, saya akhirnya mendapatkan kembali kata sandi saya, saya perbarui dengan teks yang dapat disalin sehingga mungkin orang lain dapat menyalin dan menempel seperti biasa, dan untuk beberapa orang lain yang bisa mendapatkan indeksasi data (jika ya). :-) Selamat Kumis November.

Tabel Konversi

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
sumber
4
Mengapa diacungi jempol? Ini benar-benar menjawab pertanyaan, sehingga Anda dapat memeriksa cara mem-parsing dalam tipe lain
Davide
4
@Bagi Mungkin karena posting tidak boleh menyertakan informasi penting sebagai gambar ketika dapat diposting sebagai teks. Gambar tidak dapat dicari dan disalin / ditempelkan, sering diblokir dan tidak dapat dibaca oleh pengguna yang mengandalkan pembaca layar.
Modus Tollens
Harap edit posting Anda dan tampilkan teks yang sebenarnya, bukan tangkapan layar. Orang lain tidak dapat menyalin dan menempel dari gambar Anda. Lihat di sini untuk detailnya. Terima kasih.
Pang
2
Saya setuju dengan pertanyaan @Davide - "Mengapa jempol ke bawah?". Saya percaya bahwa ini akan membuat pengguna yang mendapatkan ini tidak berkontribusi dengan stackoverflow di masa depan dan saya percaya bahwa ini tidak boleh terjadi. Dari perspektif saya "jempol ke bawah" tidak boleh digunakan! Esensinya negatif dan tidak membawa nilai sama sekali.
Marco
Apakah Anda yakin itu char --> StringGoesHere.parseFloat(int position);benar? Jujur saya belum memeriksa, tetapi saya cukup yakin Stringtidak memiliki parseFloatmetode, dan bahkan jika itu, saya tidak bisa melihat mengapa itu akan menjadi apa yang Anda coba lakukan di sana.
BeUndead
3

Jika Anda ingin mengurai String ke char, sedangkan objek String mewakili lebih dari satu karakter, Anda cukup menggunakan ekspresi berikut: char c = (char) Integer.parseInt (s) . Di mana s sama dengan String yang ingin Anda parsing. Kebanyakan orang lupa bahwa char mewakili angka 16-bit, dan karenanya dapat menjadi bagian dari ekspresi numerik apa pun :)

Adam Martinu
sumber
1
Ini salah. Mem-parsing sebuah string ke sebuah angka berarti bahwa nomor tersebut dikonversi ke sebuah string, dan kami ingin mendapatkan nomor itu kembali. Dengan cara yang sama persis, mengurai karakter dari string berarti karakter tersebut dikonversi ke string, dan kami ingin karakter tersebut kembali. Menggunakan nomor perantara bukanlah yang ditanyakan OP.
Vlad
@ Vlad Dia memang meminta nomor, karena itu adalah apa char, seperti intdan double. Dia bahkan memberi contoh String"123". dan siapa bilang Anda tidak bisa mengonversi a charke Stringdengan panjang lebih besar dari satu, dan kembali? Coba sendiri dengan char c = 123: String.valueOf((int) c).equals("123")pengembalian true.
Adam Martinu
1
Maaf, tetapi semuanya berujung pada angka, itu bukan inti dari pertanyaan. Anda dapat melihat jawaban yang diterima, yang dengan jelas mengecualikan perantara int. Misalnya, Anda perlu cor untuk int, yang berarti bahwa Anda bekerja tidak dengan yang asli char, tetapi dengan intyang terjadi entah bagaimana sesuai dengan aslinya 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));
        }
    }
}
pengguna6307216
sumber
Harap tambahkan penjelasan pada jawaban Anda.
André Kool
1

Anda dapat melakukan hal berikut:

String str = "abcd";
char arr[] = new char[len]; // len is the length of the array
arr = str.toCharArray();
Santosh Kulkarni
sumber
Anda dapat mempersingkat ini menjadi onelinerString str = "abc"; char[] char_str = str.toCharArray();
abhyudayasrinet
1

Anda cukup menggunakan toCharArray()untuk mengonversi string menjadi array char:

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

Cara Esai:

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

Untuk Output, lihat tautan ini: Klik di sini

Terima kasih :-)

Shiva Nandam Sirmarigari
sumber
0

Anda dapat menggunakan fungsi .charAt (int) dengan Strings untuk mengambil nilai char pada indeks apa pun. Jika Anda ingin mengonversi String ke array char, coba panggil .toCharArray () pada String. Jika string berukuran 1 karakter, ambil saja karakter itu dengan memanggil .charAt (0) (atau .First () di C #).

Mayer Spitzer
sumber