স্ট্রিং থেকে জাভাতে চর রূপান্তর / পার্স কিভাবে করবেন?


199

জাভাতে আমি Stringকোনও charপ্রকারের মানকে কীভাবে পার্স করব ?

আমি এটি int এবং ডাবল করতে উদাহরণস্বরূপ (উদাহরণস্বরূপ Integer.parseInt("123")) জানি। স্ট্রিংস এবং চার্সের জন্য কোনও ক্লাস রয়েছে?


আপনি কোনও স্ট্রিংকে চর অ্যারে পার্স করতে চান? আরও নির্দিষ্ট করা দয়া করে।
Zsombor Erdődy-Nagy


1
হ্যাঁ তবে আমি এর মধ্যে এমন কোনও পদ্ধতি দেখছি না যা আমাকে স্ট্রিং যেমন "এ" এর
চরকে

5
আমি এটি একটি সদৃশ মনে করি না। আমি কেবল একটি একটি অক্ষর রূপান্তর করার চেষ্টা করছি।
যোখেন

উত্তর:


295

যদি আপনার স্ট্রিংটিতে হুবহু একটি চরিত্র থাকে তবে এটিকে একটি চরিত্রে রূপান্তরিত করার সহজতম উপায়টি সম্ভবত charAtপদ্ধতিটি কল করা :

char c = s.charAt(0);

1
একাধিক চরিত্রের জন্য: চর [] 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 অক্ষর দীর্ঘ না হয় তবে এটি একটি অক্ষরে পার্স করা যায় না।


হতে পারে একটি হ্যাক, তবে করা যেতে পারে। স্ট্যাকওভারফ্লো.com
21813888/

আপনার বক্তব্যটি বলে যে 1 টির চেয়ে বেশি অক্ষরের একটি পূর্ণসংখ্যাতে পার্স করা যায় না, আমার উত্তর দেখুন।
অ্যাডাম মার্টিনু

@ অ্যাডাম: আপনার উত্তরটি ভুল, আমি একটি মন্তব্যে ব্যাখ্যা করব।
ভ্লাদ



4

সবচেয়ে সহজ উপায় রূপান্তর করতে Stringএকটি থেকে charব্যবহার করছে 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
আমি @ ডেভিড প্রশ্নের সাথে একমত - "থাম্বস ডাউন কেন?"। আমি বিশ্বাস করি যে এটি যে ব্যবহারকারীকে ভবিষ্যতে স্ট্যাকওভারফ্লোতে অবদান রাখতে না পেয়েছে এবং আমি বিশ্বাস করি যে এটি হওয়া উচিত নয়। আমার দৃষ্টিকোণ থেকে "থাম্ব ডাউন ডাউন" ব্যবহার করা উচিত নয়! এটি এর সংক্ষেপে নেতিবাচক এবং এগুলির কোনও মূল্য এনে দেয় না।
মার্কো

আপনি কি নিশ্চিত যে char --> StringGoesHere.parseFloat(int position);এটি সঠিক? সত্যিই আমি পরীক্ষা করে দেখিনি, তবে আমি নিশ্চিত Stringযে এর কোনও parseFloatপদ্ধতি নেই এবং আমি যদি তা করতে পারি তবে কেন আপনি সেখানে চেষ্টা করার চেষ্টা করছিলেন তা কেন হবে তা আমি দেখতে পাচ্ছি না।
BeUndead

3

আপনি যদি একটি স্ট্রিংকে একটি চরকে বিশ্লেষণ করতে চান, যেখানে স্ট্রিং অবজেক্ট একাধিক চরিত্রের প্রতিনিধিত্ব করে, আপনি কেবল নিম্নোক্ত এক্সপ্রেশনটি ব্যবহার করুন: চর সি = (চর) পূর্ণসংখ্যা. পার্সেন্ট (গুলি) । কোথায় গুলি স্ট্রিং সমান আপনি বিশ্লেষণ করতে চাই। বেশিরভাগ লোক ভুলে যায় যে চরের 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
ভ্লাদ

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

আপনি নিম্নলিখিতটি করতে পারেন:

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

আপনি একটি oneliner এই খাটো করতে পারেনString str = "abc"; char[] char_str = str.toCharArray();
abhyudayasrinet

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) (বা। প্রথম () কে # তে কল করে) সেই অক্ষরটি গ্রহণ করুন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.