String s = "ab#cd#ef#gh#";
String regex = "#";
char [] sChar = s.toCharArray();
char [] regexChar = regex.toCharArray();
int count = 1;
for (int i = 0; i < regexChar.length; i++){
for (int j = 0; j < sChar.length; j++){
if (regexChar [i] == sChar[j]){
count += 2;
}
}
}
String [] splitS = new String [count];
String temp;
for (int k = 0; k < count; k++){
temp = "";
for (int i = 0; i < regexChar.length; i++){
for (int j = 0; j < sChar.length; j++){
if (regexChar[i] == sChar[j]){
temp = Character.toString(regexChar[i]);
}
else {
temp = temp + Character.toString(sChar[j]);
}
}
}
splitS[k] = temp;
}
到目前为止,这是我的代码,但是它给了我splitS[#,#,#,#,#,#,#,#]
。但是应该是splitS[ab,#,cd,#,ef,#,gh,#]
。谁能告诉我为什么这样做呢?
我认为应该认真考虑有关使用现有标准类的评论,但仅仅是出于娱乐目的,该怎么办:
import java.util.ArrayList;
class Splitter{
static ArrayList<String> tokenize(String subject, String pattern)
{
ArrayList<String> tokens = new ArrayList<>();
int tokenOff = 0;
while(true)
{
int tokenPos = subject.indexOf(pattern, tokenOff);
if(tokenPos == -1){ break; }
String tok = subject.substring(tokenOff, tokenPos);
addToken(tokens, tok);
addToken(tokens, pattern);
tokenOff = (tokenPos + pattern.length());
}
// Add any remaining characters
addToken(tokens, subject.substring(tokenOff));
return tokens;
}
static void addToken(ArrayList<String> list, String tok)
{
if(tok.length() > 0){ list.add(tok); }
}
public static void main(String args[])
{
String subject, pattern;
ArrayList<String> tokens;
subject = "ab#cd#ef#gh#";
pattern = "#";
tokens = tokenize(subject, pattern);
System.out.println(tokens); // [ab, #, cd, #, ef, #, gh, #]
subject = "ab##cd##ef##gh##";
pattern = "##";
tokens = tokenize(subject, pattern);
System.out.println(tokens); // [ab, ##, cd, ##, ef, ##, gh, ##]
subject = "ab##cd##ef##gh##ij";
pattern = "##";
tokens = tokenize(subject, pattern);
System.out.println(tokens); // [ab, ##, cd, ##, ef, ##, gh, ##, ij]
subject = "ab##cd#ef#gh##ij";
pattern = "##";
tokens = tokenize(subject, pattern);
System.out.println(tokens); // [ab, ##, cd#ef#gh, ##, ij]
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句