仅从字符串中提取字符并将其存储在另一个字符串中

时间:2015-10-10 10:05:40

标签: java regex string

我有一个字符串,比如说

String str = "1.) Java is fun. play with 12"

我希望)之后的所有内容都存储为单独的字符串。最好的方法是什么?我尝试在")"上分割字符串:

String det[] = str.split(")");

但它正在给予:

  

java.util.regex.PatternSyntaxException:无与伦比的结束')'`

示例输入:

String str = "1.) JAVA is fun.Play with 12"

示例输出:

String result = "JAVA is fun.Play with 12"

3 个答案:

答案 0 :(得分:4)

String.split将正则表达式作为参数。 )是regural表达式的特殊字符,因此您需要使用\将其转义。由于在Java \中也需要进行转义,因此您需要使用\\)进行拆分。

String str = "1.) Java is fun. play with 12";
String[] tokens = str.split("\\)", 2); // split only in 2 parts
System.out.println(tokens[1]);

请注意,在此代码中,我为split调用指定了2的限制。这意味着它只将String分成两部分。这是为了解决您要提取的String可能还包含)的情况,例如"1.) Java is fun :). Play with 12"的输入。

作为旁注,在这种情况下,使用substring代替split会更容易(也许更快),如下所示:

String str = "1.) Java is fun. play with 12";
String result = str.substring(str.indexOf(')') + 1);
System.out.println(result);

答案 1 :(得分:2)

尝试以这种方式分裂。

/* Note how this code is indented and looks clean */

#include <stdio.h>

int main(void) /* Valid signature of main */
{
    int input, c; /* Note the extra variable */

    printf("\nPlease Enter A Number Between 1 and 100\n");
    scanf("%d", &input);

    printf("\nYou Entered %d\n", input);

    if(input <= 0 || input > 100) /* Note the use of || instead of && */
    {
        printf("Error!! Please Enter A Number Between 1 and 100 \n");
    }
    else /* Note the else */
    {
        if(input % 2 == 0)
        {
            printf("\n %d is EVEN \n", input);
        }
        else
        {
            printf("\n %d is ODD \n", input);
        }
    }

    while((c = getchar()) != '\n' && c != EOF); /* Clear the stdin */
    getchar(); /* Wait for a character */
}

答案 2 :(得分:0)

我会做这样的事情:

String str= "1.) JAVA is fun.Play with 12";
String separateString;
int index = str.indexOf(')');
if (index >= 0) {
    separateString = str.substring(index);
}