将字符串变量的内容分为两部分
问题描述:
我有一个字符串变量,我必须将字符串变量的内容分成两部分,并将它们保存在两个不同的字符串变量中。我已经提取了其中的一部分,但我无法提取其他部分。将字符串变量的内容分为两部分
这是代码:
String set_id="(1) Speed Test 150(min) Demo 1";
set_id = set_id.substring(set_id.indexOf("(") + 1);
set_id = set_id.substring(0, set_id.indexOf(")"));
上述代码已提取的数字我被保存在SET_ID变量。
现在我想提取速度测试150(分钟)从可变演示1并将其保存在名为set_name变量。
变量内容的格式将始终保持不变,但数字和名称本身可能会有所不同。
我应该怎么做提取字符串的不同部分?
答
您将要覆盖的时候,你所得到的第一子原始字符串。保存每个子在一个新的变量:
String set_id="(1) Speed Test 150(min) Demo 1";
String part1 = set_id.substring(set_id.indexOf("(") + 1);
part1 = part1.substring(0, part1.indexOf(")"));
String part2 = set_id.substring(set_id.indexOf(")")+2);
答
假设的格式是一样的:
set_id.substring(set_id.indexOf(")")+2);
答
入住这...一个更好,更高效的正则表达式可用于...
Pattern pattern = Pattern.compile("\\((\\d{0,1})\\)(.*$)");
String string = "(1) Speed Test 150(min) Demo 1";
Matcher matcher = pattern.matcher(string);
if (matcher.matches()) {
System.out.println("Total matches: " + matcher.groupCount());
for(int i=1, max=matcher.groupCount(); i<=max; i++) {
System.out.println(i + " : " + matcher.group(i));
}
} else {
System.out.println("No match");
}
答
我aaded“]”,找出了年底carachter 。
String set_id="(1) Speed Test 150(min) Demo 1]";
String set_name=set_id.subSequence(set_id.indexOf(')')+1, set_id.indexOf(']')).toString();
System.out.println(set_name);
现在它为我工作。
O/P: - 速度测试150(分钟)演示
答
尝试以下方法:
\\((\d+)\\)\s*(.+)
$1
给出id和$2
给出名称。
这里,
\\(
和\\)
匹配开闭括号。(逃脱,(
和)
有特殊意义)
(\d+)
匹配一个或多个数字(捕获,使得$ 1可以被用来指代这个)
\s*
匹配零场或多个空格
(.+)
比赛一个或多个(任何)字符(再次捕获)
使用它像
String string = "(1) Speed Test 150(min) Demo 1";
id = string.replaceAll("\\((\d+)\\)\s*(.+)","$1");
name = string.replaceAll("\\((\d+)\\)\s*(.+)","$2");
答
您可以使用Regex来提取变量。下面是示例代码。
Pattern pattern = Pattern.compile("(\\d+).+?(\\d+)\\(");
String sample = "(1) Speed Test 150(min) Demo 1";
Matcher matcher = pattern.matcher(sample);
if(matcher.find()){
System.out.println(matcher.group(1));
System.out.println(matcher.group(2));
}
答
你可以试试这个:
public class RegexTest {
public static void main(String[] args) {
String originalString = "(1) Speed Test 150(min) Demo 1";
String setId = originalString.replaceAll("\\((\\d+)\\)\\s*(.+)", "$1").trim();
String setName = originalString.replaceAll("\\((\\d+)\\)\\s*(.+)", "$2").trim();
System.out.println("setId: " + setId);
System.out.println("setName: " + setName);
}
}
使用正则表达式将是一个更好的选择来提取这些值,如果格式是固定的。 – 2013-03-15 05:02:05