我正在逐行阅读,当出现定界符;
(分号+空格)时,我需要将每一行分开。每行如下:s1; s2 s3; s4。我想在存在;
(分号+空格)的地方分割这行。我只想在分号和空格彼此相邻的地方(空格在分号之后)进行拆分。
我如何使用StringTokenizer做到这一点?
我已经尝试过split(“;”),但这在每次出现空格时都会拆分String。
我还尝试了新的StringTokenizer(strLine,“ \ s *; \ s +”),但这在每次出现s时都会分裂。
String[] parsedStr = inputString.split(...);
StringTokenizer st = new StringTokenizer(...);
我希望输出为:
("s1","s2 s3","s4") Every token should be an element within this array.
不是
("s1"," s2 s3"," s4")
NOR
("s1","s2","s3","s4")
答案 0 :(得分:0)
您可以将正则表达式与"\\s*;\\s+"
一起使用。它将删除任何开头或结尾的空格。还需要';'至少要有1个空格。
String inputString = "s1; s2 s3; s4;s5";
String[] parsedStr = inputString.split("\\s*;\\s+");
System.out.print(Arrays.asList(parsedStr)); // ["s1", "s2 s3", "s4;s5"]
编辑:
如果需要用分号分隔,并精确保留一个空格,并保留其他空格,则可以按以下方式修改上述解决方案:
String inputString = "s1; s2 s3; s4;s5; s6; s7;";
String[] parsedStr = inputString.split(";\\s{1}");
System.out.print(Arrays.asList(parsedStr)); // ["s1", "s2 s3", "s4;s5", "s6", " s7;"]
答案 1 :(得分:0)
根据您先前的问题,解决方案如下:
public class Split {
public static void main(String[] args) {
String inputString = "s1; s2 s3; s4;s5";
String[] parsedStr = inputString.split("; | |;");
System.out.print(Arrays.asList(parsedStr));
} }
由于您已经编辑了问题说明,因此解决方案将很简单:
inputString.split("; ");
答案 2 :(得分:-1)
public static void main(String [] args){
java.util.Scanner input=new java.util.Scanner
("s1; s2 s3; s4").useDelimiter("\\s*; \\s*");
while(input.hasNext())
{
System.out.print(input.next()+",");
}
input.close();
}