如何在 java 上将变量和常量作为字符串从函数中拆分和分离

How to split and separate variables and constantes from a function as string on java

我想从给定的多项式函数(String 类型)中拆分变量和常量。

示例:splitString("4x+6y+7z",var[],const[])

结果:

var[]={x;y,z}
Const[]={4;6,7}

为了从字符串中分离常量和变量,您需要循环遍历字符串的每个字符并找出字符是 Digit 还是 Alphabetic 。您可以使用 Character.isDigit()Character.isAlphabetic() 方法来区分字符。

例如,见下:

String s = "4x+6y+7z";

        //some fields will be null, because we don't know how many 
        //constants will be there, same goes for variables array 
        String[] constants = new String[s.length()];

        String[] variables = new String[s.length()]; 

        //loop through the string, length of string             
        for(int i =0, j = 0, k=0 ; i< s.length();i++) {
            if(Character.isDigit(s.charAt(i))) {
                //the character at location ith location of string is Digit
                constants[j] = String.valueOf(s.charAt(i));
                j++; 
            } else if(Character.isAlphabetic(s.charAt(i))) {
                 //the character at location ith location of string is Alphabet
                variables[k] = String.valueOf(s.charAt(i)); 
                k++; 
            }
        }

        System.out.println(Arrays.toString(constants));
        System.out.println(Arrays.toString(variables));

您还可以利用java中的ArrayList,以Double和Character的形式存储这些常量和变量。与数组不同,列表的大小不必提前声明(上面我将两个数组的大小声明为输入字符串的大小,这显然会导致数组中出现一些空字段,这在许多数组中都可以避免,其中之一他们正在使用 List)

String s = "4x+6y+7z";

//list to store constants
List<Double> constantsList = new ArrayList<Double>(); 

//list to store variables 
List<Character> variablesList = new ArrayList<Character>(); 

//loop through length of string         
for(int i =0; i< s.length();i++) {
    if(Character.isDigit(s.charAt(i))) {
        //add constant to the list as Double
        constantsList.add(Double.valueOf(s.charAt(i))); 
    } else if(Character.isAlphabetic(s.charAt(i))) {
        //add variable to the list as double
        variablesList.add(Character.valueOf(s.charAt(i))); 
    }
}

System.out.println(constantsList); 
System.out.println(variablesList);

如果您希望将常量和变量作为数组,那么您可以将列表转换回精确大小的数组,因为您知道那里有多少常量和变量。