【问题标题】:Splitting a string and extracting specific strings to array [duplicate]拆分字符串并将特定字符串提取到数组[重复]
【发布时间】:2015-11-25 03:25:48
【问题描述】:

我有一个字符串“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'};

【问题讨论】:

  • 很多答案在路上..顺便说一句,到目前为止你尝试了什么?
  • 一个简单的谷歌查询“如何在 Java 中拆分字符串”给了我指向 SO 帖子 How to split a string in Java 的链接
  • @LBesacon 我正在寻找提取单引号中的子字符串的解决方案,而不是寻找如何拆分。

标签: java arrays substring


【解决方案1】:

您可以使用分隔符拆分输入并获取备用字符串。

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 喜欢

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

【讨论】:

  • 谢谢,但我正在寻找提取单引号中的子字符串的解决方案。 (其不需要的替代词在单引号子字符串中)。
  • 问题中未指定。我会更新我的答案
  • 亲爱的我更新了我的问题...
  • @Ravichandra 我更新了我的答案,看看吧。
  • @Ravichandra 我添加了一些更详细的版本来接受所有其他情况。请看一下。
【解决方案2】:

这将按照@Uma Kanth 的版本中的描述漂亮地打印数组。如果你需要的话。

System.out.print("usernames = [");
for (int i = 0; i < usernames.length; i++) {
    String username = usernames[i];
    System.out.print(username);
    if (i < usernames.length - 1) {
        System.out.print(", ");
    }
}
System.out.println("]");

【讨论】:

  • 但它不能解决我的问题。除了以上所有你可以使用 System.out.println(Arrays.toString(usernames));
  • 谢谢@Ravichandra 我不知道这个技巧!
猜你喜欢
  • 1970-01-01
  • 2013-08-19
  • 1970-01-01
  • 2016-03-22
  • 2014-07-22
  • 2021-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多