[英]Splitting strings based on a delimiter
我试图打破一个非常简单的字符串集合
0|0
10|15
30|55
等等基本上由管道分开的数字。
当我使用java的字符串拆分函数与.split(“|”)。 我得到了一些不可预知的结果。 在第一个插槽中的空白区域,有时数字本身并不是我认为应该的位置。
任何人都可以帮助并给我建议如何使用reg exp来保持整数?
我被要求提供代码尝试进行实际拆分。 所以请允许我这样做,希望进一步澄清我的问题:)
String temp = "0|0";
String splitString = temp.split("|");
结果
\n
0
|
0
我想要得到
0
0
只要。 永远感激任何提前帮助:)
我仍然建议使用split()
,它默认会跳过null标记。 你想要删除字符串中的非数字字符,只保留管道和数字,然后你可以轻松地使用split()
来获得你想要的。 或者您可以传递多个分隔符(以正则表达式的形式),这应该工作:
String[] splited = yourString.split("[\\|\\s]+");
和正则表达式:
import java.util.regex.*;
Pattern pattern = Pattern.compile("\\d+(?=([\\|\\s\\r\\n]))");
Matcher matcher = pattern.matcher(yourString);
while (matcher.find()) {
System.out.println(matcher.group());
}
管道符号在正则表达式中是特殊的(它标记替代品),您需要将其转义。 根据您使用的Java版本,这可以很好地解释您的不可预测的结果。
class t {
public static void main(String[]_)
{
String temp = "0|0";
String[] splitString = temp.split("\\|");
for (int i=0; i<splitString.length; i++)
System.out.println("splitString["+i+"] is " + splitString[i]);
}
}
输出
splitString[0] is 0
splitString[1] is 0
请注意,一个反斜杠是regexp转义符,但由于反斜杠也是java源中的转义字符,因此需要其中两个将反斜杠推入正则表达式。
您可以为管道替换空白区域并将其拆分。
String test = "0|0 10|15 30|55";
test = test.replace(" ", "|");
String[] result = test.split("|");
希望这对你有所帮助..
您可以使用StringTokenizer。
String test = "0|0";
StringTokenizer st = new StringTokenizer(test);
int firstNumber = Integer.parseInt(st.nextToken()); //will parse out the first number
int secondNumber = Integer.parseInt(st.nextToken()); //will parse out the second number
当然,如果你有多个字符串,你总是可以将它嵌套在while循环中。
此外,您需要导入java.util。*才能使用。
管道('|')是正则表达式中的特殊字符。 如果你想将它作为常规字符使用,它需要用'\\'字符“转义”,不幸的是'\\'是Java中的一个特殊字符所以你需要做一种双逃避操作,例如
String temp = "0|0";
String[] splitStrings = temp.split("\\|");
考虑一种情况,我们以字符串的形式从csv或xls文件中读取一行,并且需要根据分隔符分隔字符串数组中的列。
下面是实现此问题的代码段。
{ ...
....
String line = new BufferedReader(new FileReader("your file"));
String[] splittedString = StringSplitToArray(stringLine,"\"");
...
....
}
public static String[] StringSplitToArray(String stringToSplit, String delimiter)
{
StringBuffer token = new StringBuffer();
Vector tokens = new Vector();
char[] chars = stringToSplit.toCharArray();
for (int i=0; i 0) {
tokens.addElement(token.toString());
token.setLength(0);
i++;
}
} else {
token.append(chars[i]);
}
}
if (token.length() > 0) {
tokens.addElement(token.toString());
}
// convert the vector into an array
String[] preparedArray = new String[tokens.size()];
for (int i=0; i < preparedArray.length; i++) {
preparedArray[i] = (String)tokens.elementAt(i);
}
return preparedArray;
}
上面的代码片段包含对StringSplitToArray的方法调用,其中在方法中将stringline转换为字符串数组,根据指定的分隔符或传递给方法来分割行。 分隔符可以是逗号分隔符(,)或双重代码(“)。
有关详细信息,请访问以下链接 : http : //scrapillars.blogspot.in
这应该适合你:
([0-9]+)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.