我想拆分字符串并将空格视为分隔符。我需要知道字符串的每两个单词之间存在多少个空格。例如:
很冷被分割为:
它
一个空间
是
一个空间
冷。
感冒被拆分为:
它
两个空格
是
两个空格
冷。
我需要这样做才能根据字节在字符串中找到单词的位置。例如,在第一句中, cold 的位置在7到10个字节之间。
我编写了以下代码,但我认为所有的空格都是在一个空格之后发生的。
1)
StringTokenizer tokens= new StringTokenizer(content);
while(tokens.hasMoreTokens())
{
String term= tokens.nextToken();
prePos=position;
int len= term.length();
position= position+len;
bw.append(term+"\t"+prePos+"\t"+position+"\n");
if(tokens.hasMoreTokens())
position =position +2;
}
2)
String[]tokens=content.split("\\s+");
for(String str:tokens)
{
prePos=position;
int len= str.length();
position= position+len;
bw.append(str+"\t"+prePos+"\t"+position+"\n");
position =position +2;
}
答案 0 :(得分:1)
您希望在文本更改为空格[^\\s]\\s
时以及当空格更改为文本\\s[^\\s]
时拆分。
将这些变体放入非捕获组,然后or
将它们放在一起:
final String regex = "(?<=[^\\s])(?=\\s)|(?<=\\s)(?=[^\\s])"
final String test = "It is cold";
final String[] result = test.split(regex);
result
包含的内容:["It", " ", "is", " ", "cold"]
答案 1 :(得分:0)
如果要计算空格。试试这个,
public static void main(String[] args)
{
String s = "It is cold";
int cnt=0;
for(int i=0;i<s.length();i++)
if(s.charAt(i)==' ')
{
cnt++;
}
}
System.out.println("WHITE SPACE COUNT : "+cnt);
}
答案 2 :(得分:0)
我在@AKS 123提示的帮助下解决了我的问题。
int position=0;
int prePos=0;
int cnt=0;
String term="";
for(int i=0;i<content.length();i++)
if(content.charAt(i)==' ')
{
cnt++;
while(content.charAt(i+1)==' ')
{
cnt++;
i++;
}
prePos=position;
int len= term.length();
position= position+len;
bw.append(term+"\t"+prePos+"\t"+position+"\n");
position=position+cnt;
term="";
cnt=0;
}
else
term=term+content.charAt(i);