Java 拆分字符串并将特定字符串提取到数组
我有一个字符串“S”。只有单引号中的子字符串必须分配给字符串数组。它可能不是必需的。备用字在单引号中Java 拆分字符串并将特定字符串提取到数组,java,arrays,substring,Java,Arrays,Substring,我有一个字符串“S”。只有单引号中的子字符串必须分配给字符串数组。它可能不是必需的。备用字在单引号中 String S = "Username 'user1' Username2 'user2' Usermane3 'user3' 'user4'"; 它必须按如下方式分配(仅带单引号的子字符串) 我试过的 String s1 = S.replace(System.getProperty("line.separator"), " ");
String S = "Username 'user1'
Username2 'user2'
Usermane3 'user3' 'user4'";
它必须按如下方式分配(仅带单引号的子字符串)
我试过的
String s1 = S.replace(System.getProperty("line.separator"), " ");
//replacing newline with single space
String Username[] = s1.split(" ");
//separating string into sub-string
Username[]={Username,'user1',Username2,'user2',Username3, 'user3','user4'};
您可以使用分隔符分割输入,并获取备用字符串
String S = "Username 'user1' Username2 'user2 user21' Usermane3 'user3'";
String[] tokens = S.split("'");//use delimiter as ' to get the value inside the quote
String[] usernames = new String[tokens.length / 2];
for (int i = 1, k = 0; i < tokens.length; i += 2) {
System.out.println(tokens[i]);
usernames[k++] = tokens[i];
}
您可以使用逻辑仅获取引号中的字符串,如下所示
String S = "Username 'user1' Username2 'user2' Usermane3 'user3' 'user4'";
ArrayList<String> words = new ArrayList();
String word = "";
boolean startQuote = false;
for (int i = 0; i < S.length(); ++i) {
char ch = S.charAt(i);
if (ch == '\'') {
if (word.equals(""))
startQuote = true;
else {
words.add(word);
word = "";
startQuote = false;
}
}
else if (startQuote) {
word += ch;
}
}
System.out.println(words);
String S=“Username'user1'Username2'user2'Usermane3'user3'user4';
ArrayList words=新的ArrayList();
字串=”;
布尔startQuote=false;
对于(int i=0;i
您可以使用分隔符拆分输入,并获取备用字符串
String S = "Username 'user1' Username2 'user2 user21' Usermane3 'user3'";
String[] tokens = S.split("'");//use delimiter as ' to get the value inside the quote
String[] usernames = new String[tokens.length / 2];
for (int i = 1, k = 0; i < tokens.length; i += 2) {
System.out.println(tokens[i]);
usernames[k++] = tokens[i];
}
您可以使用逻辑仅获取引号中的字符串,如下所示
String S = "Username 'user1' Username2 'user2' Usermane3 'user3' 'user4'";
ArrayList<String> words = new ArrayList();
String word = "";
boolean startQuote = false;
for (int i = 0; i < S.length(); ++i) {
char ch = S.charAt(i);
if (ch == '\'') {
if (word.equals(""))
startQuote = true;
else {
words.add(word);
word = "";
startQuote = false;
}
}
else if (startQuote) {
word += ch;
}
}
System.out.println(words);
String S=“Username'user1'Username2'user2'Usermane3'user3'user4';
ArrayList words=新的ArrayList();
字串=”;
布尔startQuote=false;
对于(int i=0;i
这将按照@Uma Kanth版本中的描述漂亮地打印数组。如果你需要的话
System.out.print(“用户名=[”);
for(int i=0;i
这将按照@Uma Kanth版本中的描述漂亮地打印数组。如果你需要的话
System.out.print(“用户名=[”);
for(int i=0;i
很多答案正在进行中..顺便说一句,你到目前为止尝试了什么?一个简单的google查询“如何在java中拆分字符串”给了我一个指向so post@LBesacon的链接我正在寻找解决方案,以单引号提取子字符串,而不是查看如何拆分。很多答案正在进行..顺便说一句,你到目前为止尝试了什么?一个简单的google查询“如何在java中拆分字符串”为我提供了指向SO post@LBesacon的链接,我正在寻找以单引号提取子字符串的解决方案,而不是寻找如何拆分的解决方案。谢谢,但我正在寻找以单引号提取子字符串的解决方案。(不必选择单引号中的子字符串)。问题中未指定。我将更新我的答案亲爱的,我更新了我的问题…@Ravichandra我更新了我的答案。请检查。@Ravichandra我添加了几个更详细的版本以接受所有其他情况。请查看。谢谢,但我正在寻找用单引号提取子字符串的解决方案。(其不必要的替换词在单引号子字符串中)。这不是问题中指定的。我将更新我的答案亲爱的,我更新了我的问题…@Ravichandra我更新了我的答案,请检查。@Ravichandra我添加了几个更详细的版本以接受所有其他情况。请看一看。但这不是我问题的答案。你可以使用System.out.println(Arrays.toString(用户名))代替上面的所有内容;谢谢@Ravichandra我不知道那个把戏!但这并不能解决我的问题。你可以使用System.out.println(Arrays.toString(usernames));谢谢@Ravichandra我不知道那个把戏!