如何在 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);
如果您希望将常量和变量作为数组,那么您可以将列表转换回精确大小的数组,因为您知道那里有多少常量和变量。
我想从给定的多项式函数(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);
如果您希望将常量和变量作为数组,那么您可以将列表转换回精确大小的数组,因为您知道那里有多少常量和变量。