Java中如何拆分字符串之间的数字和字母,问题表述:提供了字母和数字的列表。如何使用字母和数字之间的边界分割字符串,并反过来将其分割为字母或数字的子字符串。
不使用预定义函数拆分字符串
将字符串str分成三个段:一个数字段;一个字母部分;和一个带有特殊字符的段。
示例
1) Input : Java234T678point78!!!!
Output :JavaTpoint
23467878
!!!!
这里str = "Java567T123point!!!",每个字符都被扫描,字符串的res1、res2和res3被适当地追加。
2) Input : **Java345T78point9##
Output: JavaTpoint
345789
**##
步骤
- 确定字符串的长度。
- 分别扫描字符串中的每个字符(ch) 如果(ch是一个数字),将它添加到res1字符串中。 或者,如果(ch是一个字母),向res2添加一个字符串。 否则将其添加到字符串res3中。
- 打印每一个字符串。我们将有三个字符串:一个带有数字成分,一个没有数字成分,还有一个带有特殊字符。
实现
// java program to split an alphanumeric
// string using Stringbuffer
class check
{
static void splitString(String str)
{
StringBuffer alpha = new StringBuffer(),
num = new StringBuffer(), special = new StringBuffer();
for (int i=0; i<str.length(); i++)
{
if (Character.isDigit(str.charAt(i)))
num.append(str.charAt(i));
else if(Character.isAlphabetic(str.charAt(i)))
alpha.append(str.charAt(i));
else
special.append(str.charAt(i));
}
System.out.println(alpha);
System.out.println(num);
System.out.println(special);
}
// Driver method
public static void main(String args[])
{
String str = "Java234T567point890@#!!";
splitString(str);
}
}
输出:
时间复杂度:前一种方法的时间复杂度是O(n),其中n是字符串的长度。
辅助空间:give code的空间复杂度为O(n),其中n为字符串的长度。
我们也可以用正则表达式拆分字符串,比如(?<=\D)(?=\ D)。是这样的:
public class JavaTpoint{
public static void main(String []args){
String str = "Javatpoint12345";
String[] part = str.split("(?<=\\D)(?=\\d)");
System.out.println(part[0]);
System.out.println(part[1]);
}
}
输出:
所以有很多方法可以在数字和字符之间分割字符串:
方法: 1
public class JavaTpoint{
public static void main(String []args){
String st = "JavaTpoint123456789";
String st1=st.replaceAll("[^A-Za-z]", "");
String st2=st.replaceAll("[^0-9]", "");
System.out.println("String b = "+st1);
System.out.println("Int c = "+st2);
}
}
输出:
方法: 2
public class JavaTpoint{
public static void main(String []args){
String input_string = "JavaTpoint98765";
String string_output=input_string.replaceAll("[^A-Za-z]", "");
int number_output=Integer.parseInt(input_string.replaceAll("[^0-9]", ""));
System.out.println("string_output = "+string_output);
System.out.println("number_output = "+number_output);
}
}
输出:
方法: 3
public class MyClass {
public static void main(String args[]) {
String a = "java123point456";
int i;
String str1="";
String str2="";
for(i = 0; i < a.length(); i++){
char c = a.charAt(i);
if( '0' <= c && c <= '9' )
str1=str1+c;
if( 'a' <= c && c <= 'z' )
str2=str2+c;
}
System.out.println(str1);
System.out.println(str2);
}}
输出: