【问题标题】:How to Separate Letters and Symbols from String.(Almost Done)如何从字符串中分离字母和符号。(几乎完成)
【发布时间】:2013-02-13 12:46:43
【问题描述】:
import java.util.Scanner;

public class Separate {

   public static void main(String[] args) {
         Scanner user_input = new Scanner( System.in ); 
    String variable;
    System.out.print("Enter Variable:");
      variable = user_input.next();
          Separate(variable);
   }

   public static void Separate(String str) {
          String number = "";
          String letter = "";
      String symbol = "";
          for (int i = 0; i < str.length(); i++) {
                 char a = str.charAt(i);
                 if (Character.isDigit(a)) {
                       number = number + a;

                 } else {
                       letter = letter + a;


         }
          }
          System.out.println("Alphabets in string:"+letter);
          System.out.println("Numbers in String:"+number);   
   }

}

好的,我已经有了分隔我输入的数字和字母的代码。问题是,当我输入符号时,例如 (^,+,-,%,*),它也会显示为字母。

我想要做的是将符号与字母分开,就像我在数字和字母上所做的那样,并为其制作另一个输出。

【问题讨论】:

  • 我认为您可以使用基于正则表达式的解决方案
  • 你试过正则表达式吗?这应该适用于您的问题。看看Regular Expression

标签: java string javac symbols letters


【解决方案1】:
import java.util.Scanner;

public class Separate {

public static void main(String[] args) {

      Scanner user_input = new Scanner( System.in );

      String variable;

      System.out.print("Enter Variable:");

      variable = user_input.next();

      Separate(variable);
   }

         public static void Separate(String str) 
         {
          String number = "";

          String letter = "";

          String symbol = "";

          for (int i = 0; i < str.length(); i++) {

                 char a = str.charAt(i);

                 if (Character.isDigit(a)) {
                       number = number + a;

                 } else if (Character.isLetter(a)) {
                       letter = letter + a;
                 } else {
                       symbol = symbol + a;
         }
       }
     System.out.println("Alphabets in string:"+letter);
     System.out.println("Numbers in String:"+number);
     System.out.println("Symbols in String:"+symbol);   
   }

}

【讨论】:

  • 虽然这段代码 sn-p 可以解决问题,但including an explanation 确实有助于提高帖子的质量。请记住,您正在为将来的读者回答问题,而这些人可能不知道您的代码建议的原因。也请尽量不要用解释性的 cmets 挤满你的代码,这会降低代码和解释的可读性!
【解决方案2】:
public static void separate(String string) {
        StringBuilder alphabetsBuilder = new StringBuilder();
        StringBuilder numbersBuilder = new StringBuilder();
        StringBuilder symbolsBuilder = new StringBuilder();
        for (int i = 0; i < string.length(); i++) {
            char ch = string.charAt(i);
            if (Character.isAlphabetic(ch)) {
                alphabetsBuilder.append(ch);
            } else if (Character.isDigit(ch)) {
                numbersBuilder.append(ch);
            } else {
                symbolsBuilder.append(ch);
            }
        }
        System.out.println("Alphabets in string: " + alphabetsBuilder.toString());
        System.out.println("Numbers in String: " + numbersBuilder.toString());
        System.out.println("Sysmbols in String: " + symbolsBuilder.toString()); 
    }

【讨论】:

    【解决方案3】:
    public static void Separate(String str) 
    {
        String number = "";
        String letter = "";
        String symbol = "";
    
        for (int i = 0; i < str.length(); i++) 
        {
            char a = str.charAt(i);
            if (Character.isDigit(a)) 
            {
                number = number + a;
                continue;
            } 
            if(Character.isLetter(a))
            {
                letter = letter + a;
            }
            else
            {
                symbol = symbol + a;
            }
        }
        System.out.println("Alphabets in string:"+letter);
        System.out.println("Numbers in String:"+number);   
    }
    

    【讨论】:

    • 最好使用StringBuilder
    • 谢谢!这有效!干杯!事实是我不知道您可以使用诸如继续之类的关键字;再次感谢您!
    • @Mr.Yoso - 你可以不使用continue 做同样的事情。只要有一个 else if & then 一个 else。
    【解决方案4】:

    因为这是作业的味道,看看documentation of Character,它有很好的功能isDigit

    【讨论】:

      【解决方案5】:

      您正在测试字符 isDigitelse 是否将其视为字母。 好吧,如果它不是数字,则所有其他情况都转到您的代码中的else。也为这些符号创建一个 else 大小写。

      【讨论】:

        猜你喜欢
        • 2011-05-17
        • 1970-01-01
        • 2018-11-21
        • 2018-12-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-07
        • 1970-01-01
        相关资源
        最近更新 更多