在特殊字符之前匹配字符串

时间:2014-03-29 20:15:30

标签: java regex string char match

我是java的新手,我被困在一个函数上。

我有一个字符串:"test lala idea<I want potatoes<"

我希望在"<"之前对文本进行数学处理。

示例:

Str[0] = test lala idea
Str[1] = I want potatoes

我尝试使用RegEx但是everythig没有用。 所以,如果有人有想法? 对不起我的英语技能。 感谢。

1 个答案:

答案 0 :(得分:5)

这是一个解决方案:

public static void main(String [] args)
{
    String test = "test lala idea<I want potatoes<";

    String piecesOfTest[] = test.split("<"); 
    // if you need to split by a dot you need to use "\\."

    System.out.println(piecesOfTest[0]); 
    // prints "test lala idea"
    System.out.println(piecesOfTest[1]); 
    // prints "I want potatoes"

    // Here goes a for loop in case you want to 
    // print the array position by position

}

在这种情况下,分割采用“测试lala想法”(从开始到第一个'&lt;')并且保存在piecesOfTest [0] (这是只是一个解释)。然后选择“我想要土豆”(从第一个'&lt;'util第二个'&lt;')并且将其保存到piecesOfTest 1 ,所以下一个阵列的位置。

如果你想在循环中打印它,你可以按照下面的步骤操作(这个循环应该只在.split(regex)运行后放置:

for(int i = 0; i < piecesOfTest.length; i++){

  // 'i' works as an index, so it will be run for i=0, and i=1, due to the condition 
  // (run while) `i < piecesOfTest.length`, in this case piecesOfTest.length will be 2. 
  // but will never be run for i=2, due to (as I said) the condition of run while i < 2

  System.out.println(piecesOfTest[i]);

}

只是为了学习,正如ambigram_maker所述,你也可以使用'for each'结构:

for (String element: piecesOfTest)

    // for each loop, each position of the array is stored inside element
    // So in the first loop piecesOfTest[0] will be stored inside element, for the
    // second loop piecesOfTest[1] will be stored inside element, and so on

    System.out.println(element);

}