我正在尝试解析URL字符串,以便可以对其进行验证以进行测试。我的字符串看起来
p_videoid=119110,p_videoepnumber= 0,p_videoairdate=NOT NULL,videoseason=null
我的问题是某些视频在p_videoepnumber = 0中有一个空格。我需要找到以p_videoepnumber开头并以逗号结尾的子字符串,然后删除所有空格。
我希望最终输出看起来像:
p_videoid=119110,p_videoepnumber=0,p_videoairdate=NOTNULL,videoseason=null
我不能只删除字符串中的所有空格,因为某些值带有空格。
答案 0 :(得分:2)
根据您所说的内容,您可以轻松地做到:
string.replace("= ","=");
如果您只想更改p_videoepnumber
键:
string.replace("p_videoepnumber= ","p_videoepnumber=");
// Using regex:
string.replaceAll("(p_videoepnumber=)(\\s+)","$1");
答案 1 :(得分:1)
因此,在此字符串中:
p_videoid=119110,p_videoepnumber= 0,p_videoairdate=NOT NULL,videoseason=null
您想抓住p_videoepnumber= 0,
。
想到的第一个想法是尝试匹配p_videoepnumber= .*,
,但实际上它会捕获p_videoepnumber= 0,p_videoairdate=NOT NULL,
。
当您想在第一个逗号处停止时,实际上将使用reluctant匹配器。您实际上将与p_videoepnumber= .*?,
相匹配(注意多余的?
)。
从那时起,这里是注释的代码:
String req = "p_videoid=119110,p_videoepnumber= 0,p_videoairdate=NOT NULL,videoseason=null";
// Add parenthesis to indicate the group to capture
String regex = "(p_videoepnumber= .*?,)";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(req);
// find() finds the next subsequence of the input sequence that matches the pattern.
if (matcher.find()) {
// Displays the number of found groups : 1
System.out.println(matcher.groupCount());
// Displays the found group : p_videoepnumber= 0,
System.out.println(matcher.group(1));
// Replace " " with "" in the first group and display the result :
// p_videoid=119110,p_videoepnumber=0,p_videoairdate=NOT NULL,videoseason=null
System.out.println(matcher.replaceFirst(matcher.group(1).replaceAll(" ", "")));
} else {
System.out.println("No match");
}
答案 2 :(得分:1)
您可以使用String.split
方法:
String[] splitedString = "yourString".split(",");
然后可以迭代String数组的每个元素,并找到以p_videoepnumber
开头的元素
for(int i=0; i<splitedString.length; i++){
if(splitedString[i].startsWith("p_videoepnumber"){
splitedString[i] = splitedString[i].trim();
}
}
String parsedString = String.join(",", splitedString);
答案 3 :(得分:0)
This RegEx可能会帮助您。它只是在两个可能存在空格的边界之间创建一个组:
p_videoepnumber=(\s+)[0-9]+,
您可以简单地用$1
调用这些空格,并用空字符串''
代替。
如果愿意,还可以向此表达式添加其他边界。