2014-10-01 41 views
-1

我有一个String,如:正则表达式来分隔十六进制编码

String s = "IPhone 5s $400" 

,我想要得到的:

String s1 = "IPhone 5s"; 

String s2 = "$400"; 

,如果它开始我试图渐渐的String的最后一个字和检查与"&#",如果是的话,将其从String中取出并制作为UTF-8。

但有可能价格可能不在String的末尾。

此外,所有的货币符号是否以"$#"开头? &#

+2

使用分组赶上'&#'和'之间的串;'。 – Maroun 2014-10-01 09:37:59

+0

“是否所有货币符号都以”$#“开头?” - 这取决于字符串是如何编码的。奇怪的是,这看起来像XML或HTML,其中诸如'$'的纯ASCII字符不需要被编码。 – usr2564301 2014-10-01 09:39:33

+0

我们不能回答最后一个问题,你必须告诉我们这个'String'来自哪里,它的格式是什么。如果你不知道,你首先需要弄清楚,然后再做一些正则表达式... – brimborium 2014-10-01 09:39:54

回答

0

斯普利特:

String s = "IPhone 5s $400" 
String[] splitArray = subjectString.split("(?=&#)"); 

之后,呼吁字符串StringEscapeUtils.unescapeHtml4该数组中的符号正确解码。如果只有一个这样的符号(如你的情况):

splitArray[1] = StringEscapeUtils.unescapeHtml4(splitArray[1]); 
0

您可以使用StringEscapeUtils或标准库与正则表达式,然后拆分字符串。

import java.io.*; 

class Test{ 
    public static void main(String args[]){ 
     String p = new String("IPhone 5s $400"); 
     String r = p.replaceAll("($)","\\|\\$"); 

     String[] s = r.split("\\|"); 
     System.out.println(s[0]); // IPhone 5s 
     System.out.println(s[1]); // $400 
    } 
} 

实施例:

http://ideone.com/epttX4