जावा में String से char में कन्वर्ट / पार्स कैसे करें?


199

मैं एक Stringमूल्य को पार्स कैसे करूंchar जावा में प्रकार के ?

मुझे पता है कि इसे कैसे करना है इंट और डबल (उदाहरण के लिए Integer.parseInt("123"))। क्या स्ट्रिंग्स और चार्ट के लिए एक वर्ग है?


आप एक स्ट्रिंग में एक स्ट्रिंग पार्स करना चाहते हैं? कृपया और स्पष्ट बताएं।
Zsombor Erdődy-Nagy


1
हाँ, लेकिन मुझे इसमें कोई विधि नहीं
दिखती है

5
मुझे नहीं लगता कि यह कोई डुप्लिकेट है। मैं सिर्फ एक पत्र को बदलने की कोशिश कर रहा हूं।
योकेन

जवाबों:


295

यदि आपके तार में ठीक एक वर्ण है, तो इसे वर्ण में बदलने का सबसे सरल तरीका संभवतः charAtविधि को कॉल करना है:

char c = s.charAt(0);

1
एक से अधिक वर्णों के लिए: char [] c = s.toCharArray ();

67

आप किसी भी सूचकांक पर चार मान प्राप्त करने के लिए स्ट्रिंग्स के साथ .charAt (int) फ़ंक्शन का उपयोग कर सकते हैं । यदि आप स्ट्रिंग को एक वर्ण सरणी में बदलना चाहते हैं, तो स्ट्रिंग पर .toCharArray () कॉल करने का प्रयास करें ।

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']

ठीक है, सच है, हालांकि मैं एक एकल चरित्र को एक स्ट्रिंग में बदलने की कोशिश कर रहा था, मुझे लगता है कि यह भी काम कर सकता है।
योकेन

48

आप इस ट्रिक का उपयोग कर सकते हैं:

String s = "p";

char c = s.charAt(0);

लेकिन यह बदल "123"जाएगा '1', यह है कि आप के बाद क्या कर रहे हैं?
एयरोबोब

1
मुझे विशेष रूप से "123" का उपयोग करने का मतलब नहीं था। मैं सिर्फ एक उदाहरण के रूप में उपयोग कर रहा था। चार के लिए यह "पी" की तरह एक अलग उदाहरण होगा क्योंकि एक एकल एक चरित्र है, न कि कई।
योकेन

1
क्रैरायर्रे () फ़ंक्शन आपके द्वारा चार्ट में अपनी स्ट्रिंग को विभाजित करने के मामले में वर्णों की एक सरणी लौटाता है
जेनजुरो

8

यदि स्ट्रिंग 1 वर्ण लंबा है, तो बस उस वर्ण को लें । यदि स्ट्रिंग 1 वर्ण लंबा नहीं है, तो इसे किसी वर्ण में पार्स नहीं किया जा सकता है।


शायद एक हैक, लेकिन किया जा सकता है। देखें stackoverflow.com/questions/21813888/build-char-from-string
Damo

आपका कथन यह कहता है कि 1 वर्ण से अधिक लंबे तार को पूर्णांक में पार्स नहीं किया जा सकता, गलत है, मेरा उत्तर देखें।
एडम मार्टिनू

@ एडम: आपका जवाब गलत है, मैं एक टिप्पणी में समझाता हूं।
व्लाद



4

Stringcharका उपयोग करने के लिए सबसे आसान तरीका है 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

यहाँ एक पूरी स्क्रिप्ट है:

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

मुझे थोड़ी देर हो सकती है लेकिन मुझे यह उपयोगी लगा, कैडिना को स्ट्रिंग के रूप में समझना और कन्वर्ट करने के लिए बाएं कॉलम का शीर्षक। :-)

अद्यतन करें: तो, मुझे अंत में अपना पासवर्ड वापस मिल गया, मैंने मैथुन योग्य पाठ के साथ अपडेट किया ताकि दूसरों को हमेशा की तरह कॉपी और पेस्ट कर सकें, और कुछ अन्य लोगों के लिए जो डेटा का इंडेक्सेशन प्राप्त कर सकते हैं (यदि यह करता है)। :-) हैप्पी नवंबर मूंछें।

रूपांतरण तालिका

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
अंगूठे नीचे क्यों? यह वास्तव में सवाल का जवाब देता है, इसलिए आप अन्य प्रकारों में पार्स करने के तरीके की जांच कर सकते हैं
डेविड

4
@ डैविड शायद क्योंकि पोस्ट में छवि के रूप में महत्वपूर्ण जानकारी शामिल नहीं होनी चाहिए जब इसे टेक्स्ट के रूप में पोस्ट किया जा सकता है। छवियों को खोजा नहीं जा सकता / कॉपी / पेस्ट किया जा सकता है, अक्सर अवरुद्ध कर दिया जाता है और स्क्रीन पाठकों पर निर्भर उपयोगकर्ताओं द्वारा पढ़ा नहीं जा सकता है।
मोडस टोलेंस

कृपया अपनी पोस्ट को संपादित करें और स्क्रीनशॉट के बजाय वास्तविक पाठ दिखाएं। दूसरे आपकी छवियों से कॉपी और पेस्ट नहीं कर सकते। विवरण के लिए यहां देखें। धन्यवाद।
पंग

2
मैं @Davide प्रश्न से सहमत हूँ - "अंगूठे नीचे क्यों हैं?"। मुझे विश्वास है कि यह उस उपयोगकर्ता को बना देगा जिसे भविष्य में स्टैकओवरफ्लो के साथ योगदान करने के लिए नहीं मिला है और मेरा मानना ​​है कि ऐसा नहीं होना चाहिए। मेरे दृष्टिकोण से "अंगूठे नीचे" का उपयोग कभी नहीं किया जाना चाहिए! यह अपने सार में नकारात्मक है और बिल्कुल भी कोई मूल्य नहीं लाता है।
मार्को

क्या आप सुनिश्चित हैं कि char --> StringGoesHere.parseFloat(int position);सही है? ईमानदारी से मैंने जाँच नहीं की है, लेकिन मुझे पूरा यकीन Stringहै कि इसके पास कोई parseFloatतरीका नहीं है , और अगर ऐसा होता है, तो भी मैं यह नहीं देख सकता कि आप ऐसा क्यों कर रहे हैं।
बेउंडेड

3

यदि आप स्ट्रिंग को एक चार्ट में पार्स करना चाहते हैं, जबकि स्ट्रिंग ऑब्जेक्ट एक से अधिक वर्णों का प्रतिनिधित्व करता है, तो आप बस निम्नलिखित अभिव्यक्ति का उपयोग करते हैं: char c = (char) Integer.parseInt (s) । कहाँ रों स्ट्रिंग के बराबर होती है आप पार्स करने के लिए चाहता हूँ। ज्यादातर लोग यह भूल जाते हैं कि चार का प्रतिनिधित्व एक 16-बिट संख्या है, और इस प्रकार किसी भी संख्यात्मक अभिव्यक्ति का एक हिस्सा हो सकता है :)


1
ये गलत है। एक स्ट्रिंग को एक संख्या में पार्स करने का मतलब है कि संख्या एक स्ट्रिंग में बदल गई थी, और हम संख्या को वापस प्राप्त करना चाहते हैं। ठीक उसी तरह, किसी स्ट्रिंग से किसी कैरेक्टर को पार्स करने का मतलब है कि कैरेक्टर को स्ट्रिंग में बदल दिया गया था, और हम कैरेक्टर को वापस चाहते हैं। एक मध्यवर्ती संख्या का उपयोग करना ओपी के बारे में क्या नहीं है।
व्लाद

@ व्लाद उसने एक नंबर मांगा, क्योंकि वह जो charहै, जैसा है intऔर जैसा है double। उन्होंने उदाहरण String"123" भी दिया । और कौन कहता है कि आप एक charसे Stringअधिक लंबाई के साथ एक में परिवर्तित नहीं कर सकते हैं , और वापस? इसके साथ स्वयं प्रयास करें char c = 123: String.valueOf((int) c).equals("123")रिटर्न true
एडम मार्टिनू

1
क्षमा करें, लेकिन सब कुछ संख्याओं तक उबलता है, यह सवाल का बिंदु नहीं है। आपके पास स्वीकृत उत्तर पर एक नज़र हो सकती है, जो स्पष्ट रूप से एक मध्यवर्ती को बाहर करता है int। अपने उदाहरण के लिए, आपको कास्ट करने की आवश्यकता है int, जिसका अर्थ है कि आप मूल के साथ काम नहीं कर रहे हैं char, लेकिन एक के साथ int, जो किसी भी तरह मूल के साथ होता है 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));
        }
    }
}

कृपया अपने उत्तर में कुछ अन्वेषण जोड़ें।
एंड्रे कूल


1

आप बस toCharArray()एक स्ट्रिंग को चार सरणी में बदलने के लिए उपयोग कर सकते हैं :

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


0

आप किसी भी सूचकांक पर चार मान प्राप्त करने के लिए स्ट्रिंग्स के साथ .charAt (int) फ़ंक्शन का उपयोग कर सकते हैं । यदि आप स्ट्रिंग को एक वर्ण सरणी में बदलना चाहते हैं, तो स्ट्रिंग पर .toCharArray () कॉल करने का प्रयास करें । यदि स्ट्रिंग 1 वर्ण लंबा है, तो उस चरित्र को कॉल करके .charAt (0) (या। #) (C # में) ले जाएं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.