我想从一个完整的单词中获取 String 的特定部分。
例如:
我有以下字符串。
# STRING_VALUES #
一句话如下
<p># STRING_VALUE #<br /># CMESSAGE #<br /># CUSTOMERADDRESS #<br /><br /></p>
从上面,我想得到如下字符串:
STRING_VALUES
CMESSAGE
CUSTOMERADDRESS
如何获取上述字符串?我被这个困住了。
使用split
:
String ss ="# STRING_VALUES #";
String[] parts = ss.split("#");
System.out.println(parts[1].trim()); // STRING_VALUES
演示。
对于您的特定情况,以下代码将起作用:
String str = "# STRING_VALUES #";
String result = str.substring(2,str.length()-2);
更新:(以下代码适用于您修改后的输入字符串)
String str = "<p># STRING_VALUE #<br /># CMESSAGE #<br /># CUSTOMERADDRESS #<br /><br /></p>";
String[] tokens = str.substring(3, str.length()-4).split("<br />");
// tokens will contain [0] = "# STRING_VALUE #"
// [1] = "# CMESSAGE #"
// [2] = "# CUSTOMERADDRESS #"
// [3] = ""
ArrayList<String> results = new ArrayList<String>();
for(String token : tokens)
{
if(token.length() != 0)
{
results.add(token.substring(2,str.length()-2));
}
}
// results has required strings
for(String result : results)
{
System.out.println(result);
}
你可以用正则表达式来做到这一点。请参阅类Pattern和Matcher。在您的示例中查找 STRING_VALUE 字符串的正则表达式将是:
#\s(\w*)\s#
这将在“#”和空格之后以及在空格和“#”之前返回一串单词字符(字母、数字和下划线)。单词字符链将作为您可以单独提取的子匹配返回。
或者,您可以使用String.indexOf在您的字符串中搜索分隔符的位置,并使用String.substring来提取您找到的分隔符位置之间的部分。
看看http://docs.oracle.com/javase/6/docs/api/java/lang/String.html
他们会告诉你:
以下是有关如何使用字符串的更多示例:
System.out.println("abc");
String cde = "cde";
System.out.println("abc" + cde);
String c = "abc".substring(2,3);
String d = cde.substring(1, 2);
您可以使用此处String[] split(String regex)
记录的 String 类的方法。
如果您的字符串采用这种格式,即空格分隔,您可以使用 String.split()
String ss ="# STRING_VALUES #";
System.out.println(ss.split("\\s")[1]);
上面的代码返回 STRING_VALUES 作为输出
您可以使用子字符串:
http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/String.html#substring(int , int)
或者你可以使用正则表达式: Need regexp to find substring between two tokens