2011-09-02 145 views
0

我的字符串具有该形式XxYxZx字符串操作

X,Y和Z是字符而x是可从0-999变化的数字。

我想分割这种形式的字符串。如何才能做到这一点?

  1. XX
  2. YX
  3. Zx时

实施例:

Input: "A155B45C77D89" 
Output: "A155", "B45", "C77", "D89" 
+0

复制链接:http:// stackov erlot.com/questions/3243721/how-to-get-the-last-characters-in-a-string-in-java-regardless-of-string-size – amod

+0

你能解释一下你的输入是什么,你想要什么输出? –

+0

你的问题是什么? –

回答

8
String myString="A155B45C77D89"; 
String[] parts = myString.split("(?<=\\d)(?=\\p{Alpha})"); 
System.out.println(Arrays.toString(parts)); 

输出:

[A155, B45, C77, D89] 

说明:

String.split作品使用正则表达式。正则表达式(?<=\d)(?=\p{Alpha})说“匹配一个数字preceeded所有子,由字母 succeeeded。

在一个字符串,如"A155B45C77D89",这种表达是由

A155 B45 C77 D89 
    ^^^
    here | | 
     here | 
      | 
     and here 
+0

谢谢,那工作:) – JaX

+0

@Noraix,没问题,不客气。 – aioobe

+0

如果这解决了您的问题,请将问题标记为answerd。 – aioobe

1
public static void main(String[] args) { 
     Pattern p = Pattern.compile("([A-Z])([0-9]+)"); 
     Matcher m = p.matcher("X01Y123Z99"); 
     while (m.find()) { 
      System.out.println(m.group(1) + " " + m.group(2)); 
     } 
    } 
匹配

打印

X 01 
Y 123 
Z 99