我有以下字符串;
[Username [rank] -> me] message
等级,用户名和消息的字符每次都不同。将其分为三个独立变量(用户名,等级和消息)的最佳方法是什么?
我已经尝试过:
String[] parts = text.split("] ");
但这会抛出错误。提前致谢!
使用Java对正则表达式(java.util.regex
)的支持,并让正则表达式匹配这三个部分。
例如这个: ^\[([\w]+) \[([\w]+)\] -> \w+\] (.*)$
Java代码段,略微改编自Ian F. Darwin的“ Java Cookbook”(O’Reilly):
import java.util.regex.*;
class Test
{
public static void main(String[] args)
{
String pat = "^\\[([\\w]+) \\[([\\w]+)\\] -> \\w+\\] (.*)$";
Pattern rx = Pattern.compile(pat);
String text = "[Username [rank] -> me] message";
Matcher m = rx.matcher(text);
if(m.find())
{
System.out.println("Match found:");
for(int i=0; i<=m.groupCount(); i++)
{
System.out.println(" Group " + i + ": " + m.group(i));
}
}
}
}
输出:
Match found:
Group 0: [Username [rank] -> me] message
Group 1: Username
Group 2: rank
Group 3: message
问题内容: 我有一个字符串,例如“ 600sp”,我希望从中获得整数部分(600)。 如果我这样做,由于字符串中遇到非数字值“ s”,我将收到异常。 抓住整数部分的最快最干净方法是什么? 谢谢! 问题答案: 如果您的字符串格式始终是数字后跟一些字符,请尝试执行此操作
问题内容: 如果我传递的字符串包含这样的逗号分隔键/值对 等 似乎有比解析然后迭代更好的方法。 根据Java中的键名从该字符串检索值的最佳方法是什么? 问题答案: 您可以创建自己的CSV解析器,虽然它不是很复杂,但是假设您使用的是标准CSV格式,那么在某些特殊情况下还是很实用的。 但是为什么要重新发明轮子… 您可以尝试查找CSV解析器,例如 打开CSV 超级CSV Apache Commons 还
问题内容: 尝试编写一个简短的方法,以便我可以解析一个字符串并提取第一个单词。我一直在寻找做到这一点的最佳方法。 我假设我会使用,但是我想只从字符串中获取第一个单词,并将其保存在一个变量中,并将其余标记放在另一个变量中。 有一个简洁的方法吗? 问题答案: 方法的第二个参数是可选的,如果指定该参数,则只会将目标字符串分割几次。 例如: 或者,您可以使用String方法。
问题内容: 提取像这样的字符串的整数部分的最佳方法是什么 您如何获得123部分。您可以使用Java的Scanner对其进行破解,还有更好的方法吗? 问题答案: 为什么不只使用正则表达式来匹配所需的字符串部分? 这就是您所需要的,再加上所有需要的字符。 查看http://www.regular-expressions.info/tutorial.html,了解正则表达式的工作原理。 编辑:我想说的是
问题内容: 我需要从此URL获取查询字符串,并且我不想使用request.META。我已经发现还有两种获取查询字符串的方法: 使用urlparse urlparse.urlparse(url).query 使用url编码 使用urlencode并向其中传递request.GET params字典以获取字符串表示形式。 那么哪种方法更好呢?我的同事更喜欢urlencode,但没有提供令人满意的解释。
我需要从这个URL获取查询字符串https://stackoverflow.com/questions/ask?next=1 > 使用urlparse urlparse.urlparse(url.query) 使用url encode使用urlencode并将request.GET params字典传递到其中以获取字符串表示形式。 那么哪种方式更好呢?我的同事更喜欢urlencode,但没有提供令