Java 如何在特定单词后拆分

Java 如何在特定单词后拆分,java,Java,在字符串中查找^和\u live时,我必须拆分单词。我只能拆分匹配的^,但我必须在匹配^和\u live时拆分。结果应该是 [ab,cb,db,qw] 怎么办 String usergroup="ab_live^cb_live^db_live^qw_live"; String[] userGroupParts = usergroup.split("\\^"); List<String> listUserGrou

在字符串中查找
^
\u live
时,我必须拆分单词。我只能拆分匹配的
^
,但我必须在匹配
^
\u live
时拆分。结果应该是

[ab,cb,db,qw]
怎么办

String usergroup="ab_live^cb_live^db_live^qw_live";
String[] userGroupParts = usergroup.split("\\^");                
List<String> listUserGroupParts = Arrays.asList(userGroupParts);
Set<String> SMGroupDetails = new HashSet<String>(listUserGroupParts);
String usergroup=“ab\u live ^cb\u live ^db\u live ^qw\u live”;
字符串[]userGroupParts=usergroup.split(\\^);
List listUserGroupParts=Arrays.asList(userGroupParts);
Set SMGroupDetails=newhashset(listUserGroupParts);

我们可以说拆分分隔符应该是\u live^或者仅仅是\u live在行的末尾

这就是为什么正则表达式必须由| live和capturing group(\^ |$)组成,其中包含两个由|(or)分隔的选项:

第一个备选方案“^逐字匹配字符^(在前面使用转义字符),第二个备选方案$在行尾断言位置

String[] userGroupParts = usergroup.split("_live(\\^|$)");

我们可以说分割分隔符应该是\u live^或者仅仅是\u live在行的末尾

这就是为什么正则表达式必须由| live和capturing group(\^ |$)组成,其中包含两个由|(or)分隔的选项:

第一个备选方案“^逐字匹配字符^(在前面使用转义字符),第二个备选方案$在行尾断言位置

String[] userGroupParts = usergroup.split("_live(\\^|$)");
这应该可以

public static void main(String[] args) {
    String usergroup = "ab_live^cb_live^db_live^qw_live";
    String[] userGroupParts = usergroup.split("\\^");
    for (int i=0; i<userGroupParts.length; i++) userGroupParts[i] = userGroupParts[i].split("\\_")[0];
    for (String s : userGroupParts) System.out.println(s);
}
publicstaticvoidmain(字符串[]args){
字符串usergroup=“ab\u live ^cb\u live ^db\u live ^qw\u live”;
字符串[]userGroupParts=usergroup.split(\\^);
对于(inti=0;i这应该可以

public static void main(String[] args) {
    String usergroup = "ab_live^cb_live^db_live^qw_live";
    String[] userGroupParts = usergroup.split("\\^");
    for (int i=0; i<userGroupParts.length; i++) userGroupParts[i] = userGroupParts[i].split("\\_")[0];
    for (String s : userGroupParts) System.out.println(s);
}
publicstaticvoidmain(字符串[]args){
字符串usergroup=“ab\u live ^cb\u live ^db\u live ^qw\u live”;
字符串[]userGroupParts=usergroup.split(\\^);
对于(inti=0;i我不会使用类
java.lang.String
的方法,而是使用

您希望创建一个列表,列出出现在文字字符
^
之后和字符串
\u live
之前的所有字母。下面的代码实现了这一点。(代码后面的解释。)

/*所需的导入:
*java.util.ArrayList
*java.util.List
*java.util.regex.Matcher
*java.util.regex.Pattern
*/
字符串usergroup=“ab\u live ^cb\u live ^db\u live ^qw\u live”;
Pattern=Pattern.compile(\\^?(\\w+)\u live);
Matcher Matcher=pattern.Matcher(用户组);
List listUserGroupParts=new ArrayList();
while(matcher.find()){
添加(matcher.group(1));
}
System.out.println(listUserGroupParts);
正则表达式,即上述代码中方法
compile
的参数,查找以下内容:

  • 文字字符
    ^
    ,后跟
  • 至少一个单词字符,后跟
  • 文本字符串
    \u live
  • 请注意,第2部分被括号包围,这意味着它被称为一个组

    while
    循环搜索
    usergroup
    正则表达式的下一个匹配项,每次找到匹配项时,它都提取组的内容并将其添加到

    运行上述代码时的输出为:

    [ab,cb,db,qw]
    
    我不会使用类
    java.lang.String
    的方法,而是使用

    您希望创建一个列表,列出出现在文字字符
    ^
    之后和字符串
    \u live
    之前的所有字母。下面的代码实现了这一点。(代码后面的解释。)

    /*所需的导入:
    *java.util.ArrayList
    *java.util.List
    *java.util.regex.Matcher
    *java.util.regex.Pattern
    */
    字符串usergroup=“ab\u live ^cb\u live ^db\u live ^qw\u live”;
    Pattern=Pattern.compile(\\^?(\\w+)\u live);
    Matcher Matcher=pattern.Matcher(用户组);
    List listUserGroupParts=new ArrayList();
    while(matcher.find()){
    添加(matcher.group(1));
    }
    System.out.println(listUserGroupParts);
    
    正则表达式,即上述代码中方法
    compile
    的参数,查找以下内容:

  • 文字字符
    ^
    ,后跟
  • 至少一个单词字符,后跟
  • 文本字符串
    \u live
  • 请注意,第2部分被括号包围,这意味着它被称为一个组

    while
    循环搜索
    usergroup
    正则表达式的下一个匹配项,每次找到匹配项时,它都提取组的内容并将其添加到

    运行上述代码时的输出为:

    [ab,cb,db,qw]
    
    请分享更多详细信息,以便其他人可以从您的answer@NicoHaase,是的,我对我的解决方案做了一些解释。请分享更多细节,以便其他人可以从您的解决方案中学习answer@Nico哈斯,是的,我对我的解决方案做了一些解释,“这”是什么?请分享更多详细信息,以便其他人可以从您的答案中学习。这是不言自明的:您首先按^分割,然后循环分割得到的字符串,只保留下划线前的一位……然后通过编辑它将所有这些解释添加到您的答案中应该不会太难。谢谢,它工作正常,“这”是什么?请分享更多详细信息,以便其他人可以从您的答案中学习。这是不言自明的:您首先按^分割,然后循环分割得到的字符串,只保留下划线前的一位……然后通过编辑它将所有这些解释添加到您的答案中应该不会太难。谢谢,它工作正常,