【问题标题】:How to convert/parse from String to char in java?java - 如何在java中将String转换/解析为char?
【发布时间】:2011-12-12 19:14:28
【问题描述】:

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

我知道如何对 int 和 double 执行此操作(例如 Integer.parseInt("123"))。 有字符串和字符的类吗?

【问题讨论】:

  • 你想把一个字符串解析成一个字符数组吗?请更具体。
  • 是的,但我没有看到任何方法可以帮助我将“a”等字符串更改为“a”等字符
  • 我不认为它是重复的。我正在尝试只转换一个字母。

标签: java string parsing char


【解决方案1】:

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

char c = s.charAt(0);

【讨论】:

  • 对于多个字符:char[] c = s.toCharArray();
【解决方案2】:

您可以使用带有字符串的.charAt(int) 函数来检索任何索引处的字符值。如果要将 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']

【讨论】:

  • 嗯,没错,虽然我想转换字符串中的单个字符,但我想这也可以。
【解决方案3】:

你可以使用这个技巧:

String s = "p";

char c = s.charAt(0);

【讨论】:

  • 但这会把"123"变成'1',这就是你想要的吗?
  • 我不是故意使用“123”。我只是作为一个例子。对于 char 这将是一个不同的示例,例如“p”,因为 char 是单个字符,而不是多个字符。
  • toCharArray() 函数返回一个字符数组,以防您想将字符串拆分为字符
【解决方案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);

【讨论】:

  • 为什么不赞成?这确实回答了问题,因此您可以检查如何解析其他类型
  • @Davide 可能是因为帖子不应该将重要信息作为图像包含在可以作为文本发布时。图像无法搜索和复制/粘贴,经常被屏蔽,无法被依赖屏幕阅读器的用户阅读。
  • edit您的帖子并显示实际文本而不是屏幕截图。其他人无法从您的图像中复制和粘贴。 See here 了解详情。谢谢。
  • 我同意@Davide 的问题——“为什么不赞成?”。我相信这将使获得此功能的用户将来不再为 stackoverflow 做出贡献,我认为情况不应该如此。从我的角度来看,不应该使用“大拇指向下”!它本质上是负面的,根本没有任何价值。
  • 您确定char --> StringGoesHere.parseFloat(int position); 是正确的吗?老实说,我没有检查过,但我很确定 String 没有 parseFloat 方法,即使有,我也不明白为什么你会在那里尝试这样做.
【解决方案5】:

如果字符串长度为 1 个字符,则只需 take that character。如果字符串不是 1 个字符长,则无法解析为字符。

【讨论】:

【解决方案6】:
 String string = "This is Yasir Shabbir ";
 for(char ch : string.toCharArray()){

 }

或者如果你想单独那么你可以

char ch = string.charAt(1);

【讨论】:

    【解决方案7】:

    org.apache.commons.lang.StringEscapeUtils.(un)EscapeJava 方法很可能是你想要的

    来自大脑的回答不是我的:

    https://stackoverflow.com/a/8736043/1130448

    【讨论】:

      【解决方案8】:

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

      【讨论】:

        【解决方案9】:

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

        【讨论】:

        • 这是错误的。将字符串解析为数字意味着该数字已转换为字符串,我们希望将数字取回。完全相同的方式,从字符串中解析一个字符意味着该字符被转换为一个字符串,我们想要返回该字符。 OP 询问的不是使用中间数字。
        • @Vlad 他确实要了一个号码,因为这就是char 的含义,就像intdouble 一样。他甚至举了String“123”的例子。谁说你不能将 char 转换为长度大于 1 的 String 并返回?用char c = 123 自己尝试一下:String.valueOf((int) c).equals("123") 返回true
        • 对不起,但一切都归结为数字,这不是问题的重点。您可以查看接受的答案,其中明确排除了中间int。对于您的示例,您需要将cast 转换为int,这意味着您不是使用原始char,而是使用int,它恰好对应于原始@ 987654334@.
        【解决方案10】:
        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));
                }
            }
        }
        

        【讨论】:

        • 请在你的回答中添加一些解释。
        【解决方案11】:

        您可以执行以下操作:

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

        【讨论】:

        • 您可以将其缩短为单行代码String str = "abc"; char[] char_str = str.toCharArray();
        【解决方案12】:

        您可以简单地使用toCharArray() 将字符串转换为字符数组:

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

        【讨论】:

          【解决方案13】:

          作文方式:

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

          输出见此链接:Click here

          谢谢:-)

          【讨论】:

            【解决方案14】:

            您可以使用带有字符串的.charAt(int) 函数来检索任何索引处的字符值。如果要将 String 转换为 char 数组,请尝试在 String 上调用 .toCharArray()。如果字符串是 1 个字符长,只需通过调用 .charAt(0)(或 C# 中的 .First())来获取该字符。

            【讨论】:

              猜你喜欢
              • 2011-01-26
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2010-09-19
              • 2012-06-24
              • 1970-01-01
              相关资源
              最近更新 更多