如何在Java中将String从String转换/解析为char?


199

如何在Java中将String值解析为char类型?

我知道如何进行int和double(例如Integer.parseInt("123"))。字符串和字符有类吗?


您想将String解析为char数组吗?请更具体。
ZsomborErdődy-Nagy2011年


1
是的,但是我看不到任何方法可以帮助我将字符串(例如“ a”)更改为字符(例如“ a”)
Yokhen 2011年

5
我不认为这是重复的。我正在尝试只转换一个字母。
Yokhen 2011年

Answers:


295

如果您的字符串仅包含一个字符,则将其转换为字符的最简单方法可能是调用该charAt方法:

char c = s.charAt(0);

1
对于多个字符:char [] c = s.toCharArray();

67

您可以将.charAt(int)函数与字符串一起使用,以检索任何索引处的char值。如果要将String转换为char数组,请尝试在String上调用.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']

好吧,是的,尽管我试图将单个字符转换为字符串,但我想这也可能起作用。
Yokhen 2011年

48

您可以使用此技巧:

String s = "p";

char c = s.charAt(0);

但是,这会变成"123"'1',是你追求的?
aioobe 2011年

1
我并不是要专门使用“ 123”。我只是作为一个例子。对于char来说,将是一个不同的示例,例如“ p”,因为char是单个字符,而不是多个字符。
Yokhen 2011年

1
toCharArray()函数返回一个字符数组,以防您要将字符串拆分为字符
Genjuro,

8

如果字符串长度为1个字符,则只需输入该字符即可。如果字符串的长度不是1个字符,则不能将其解析为一个字符。


也许是hack,但是可以做到的。参见stackoverflow.com/questions/21813888/build-char-from-string
Damo,2014年

您说不能将大于1个字符的字符串解析为整数的说法是错误的,请参阅我的回答。
亚当·马丁努

@Adam:您的回答是错误的,我将在评论中进行解释。
弗拉德

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

 }

或者,如果您想单独使用,则可以

char ch = string.charAt(1);


4

将a转换String为a 的最简单方法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

我可能有点晚了,但是我发现这很有用,将cadena理解为String,将左列标题理解为Convert to。:-)

更新:所以,我终于找回了密码,使用了可复制的文本进行了更新,以便其他人可以像往常一样复制和粘贴,而对于其他一些可以获取数据索引的文件(如果有的话)。:-)快乐的11月小胡子。

换算表

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
为什么不赞成?这确实回答了问题,因此您可以检查如何解析其他类型
Davide '18

4
@Davide可能是因为帖子在以文本形式发布时不应包含重要信息作为图像。图片无法搜索和复制/粘贴,通常会被屏蔽,并且依靠屏幕阅读器的用户也无法阅读图片。
Modus Tollens

编辑您的帖子,并显示实际文本而不是屏幕截图。其他人则无法从您的图像中复制和粘贴。有关详细信息,请参见此处。谢谢。

2
我同意@Davide的问题-“为什么不赞成?”。我相信这将使拥有此功能的用户将来不会对stackoverflow有所贡献,并且我认为情况并非如此。从我的角度来看,永远不要使用“拇指下降”!它的本质是负面的,根本没有带来任何价值。
Marco Marco '18

您确定char --> StringGoesHere.parseFloat(int position);正确吗?老实说,我没有检查过,但是我相当确定String没有parseFloat方法,即使有,我也看不出为什么要在那做。
BeUndead

3

如果要将String解析为char,而String对象表示多个字符,则只需使用以下表达式: char c =(char)Integer.parseInt(s)。其中s等于要解析的字符串。大多数人都忘记了char代表一个16位数字,因此可以成为任何数字表达式的一部分:)


1
错了 将字符串解析为数字意味着将数字转换为字符串,并且我们想取回数字。完全相同,从字符串中解析字符意味着该字符已转换为字符串,并且我们希望该字符返回。使用中间号码不是OP要求的。
弗拉德(Vlad)2015年

@Vlad他确实要求一个数字,因为那是a char,就像intand 一样double。他甚至举了一个例子String“ 123”。和谁说,你不能转换charString一个长度大于一个,再换更大?自己尝试char c = 123String.valueOf((int) c).equals("123")返回true
亚当·马丁努

1
抱歉,但是一切都归结为数字,这不是问题的重点。您可以看一下已接受的答案,该答案显然不包括中间语int。对于您的示例,您需要强制转换int,这意味着您不是在使用原始版本char,而是使用一个int,它正好与原始版本相对应char
弗拉德(Vlad)2015年

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

请为您的答案添加一些启发。
安德烈·库尔



0

随笔:

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

对于输出,请参见以下链接:单击此处

谢谢 :-)


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.