java - 拆分字符串并将特定字符串提取到数组

标签 java arrays substring

<分区>

我有一个字符串“S”。只有单引号中的子字符串必须分配给字符串数组。它可能不是必需的,单引号中的替代词。

String S = "Username 'user1'
             Username2 'user2'
             Usermane3 'user3' 'user4'";

它必须如下分配(仅限带有单引号的子串)

 String Username[] ={'user','user1','user2','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];
}

如果没有规则单个Username 会有一个user1 like

String S = "Username 'user1' Username2 'user2' Usermane3 'user3' 'user4'";

您可以使用逻辑来仅获取引号中的字符串,如下所示。

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);

关于java - 拆分字符串并将特定字符串提取到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32305400/

相关文章:

c - Objective C - 总结 int 数组中的元素

C# String.Substring 剪切出一个 Ip 地址和一个字符串

javascript - 走出一个表情

python - 为什么索引超出范围的子字符串切片有效?

java - minikube 中的损坏 jar

java - FirebaseUI - 不兼容的类型 : String cannot be converted to DatabaseReference

java - 使用斩波器添加字符串

java - 我收到此 "NullPointerException"错误

javascript - 理解数组语法

java - 查找数组中出现次数最多的数字