2014-05-16 80 views
2

我刚开始学习java,所以请不要介意。 我有串根据java中的多个字符串分割字符串

String test="John Software_Engineer Kartika QA Xing Project_Manager Mark CEO Celina Assistant_Developer"; 

我想基于的Company={"Software_Engineer", "QA","Project_Manager","CEO ","Assistant_Developer"}位置分裂;

EDITED:

如果以上是困难然后是有可能???基于或{AND,OR)

String value="NA_USA >= 15 AND NA_USA=< 30 OR NA_USA!=80" 
String value1="EUROPE_SPAIN >= 5 OR EUROPE_SPAIN < = 30 " 

如何分割,并把在哈希表在java中。最后如何从最终访问它。这不是必要的,但我主要关心的是如何拆分。

下一页编辑:

我从这个解决方案,它是最好的主意或没有????

String to="USA AND JAPAN OR SPAIN AND CHINA"; 
String [] ind= new String[]{"AND", "OR"}; 
    for (int hj = 0; hj < ind.length; hj++){ 
to=to.replaceAll(ind[hj].toString(), "*"); 
    } 
    System.out.println(" (=to=) "+to); 

    String[] partsparts = to.split("\\*"); 
    for (int hj1 = 0; hj1 < partsparts.length; hj1++){ 
    System.out.println(" (=partsparts=) "+partsparts[hj1].toString()); 
    } 

List<String> test1=split(to, '*', 1); 
System.out.println("-str333->"+test1);   

新编辑:

如果我有这种类型的字符串怎么能分裂:

final String PLAYER = "IF John END IF Football(soccer) END IF Abdul-Jabbar tennis player END IF Karim -1996 * 1974 END IF"; 

我怎样才能像这个:String [] data=[John , Football(soccer) ,Abdul-Jabbar tennis player, Karim -1996 * 1974 ]

你有什么想法?

+3

将各个名字和位置放在同一行上并不是一个好主意,除了空格之外没有任何分隔符。这将使分裂不可行;你最好自己解析字符串。 – Makoto

+0

检查我编辑的问题,这是可行的分裂。 –

+0

@ user3643373不是真的,因为程序很难说“QA”是一个位置而不是名称,没有位置列表(除非用大写字母表示) – awksp

回答

0

试试这个

String[] a = test.replaceAll("\\w+ (\\w+)", "$1").split(" "); 

在这里,我们先用第二个字替代字对,然后通过空间

+0

好的,先生。请等待我的回应。 –

+0

@Evgeniy Dorofeev你能简单解释一下你的答案吗?这会让你的答案对其他人更有用。 –

+0

是的,我同意@MohitJain,因为我是初学者,很难理解如何正确地工作。 –

1

这将拆分您的字符串为您和其存储在一个字符串数组(最大尺寸50分裂)。

private static String[]split = new String[50]; 
    public static void main(String[] args) { 


    String test="John -Software_Engineer Kartika -QA Xing -Project_Manager Mark -CEO Celina -Assistant_Developer"; 

    for (String retval: test.split("-")){ 

     int i = 0; 
     split[i]=retval; 

     System.out.println(split[i]); 
     i++; 
     } 

     } 
+0

你明白我的问题吗?请再次看到我的问题,谢谢你的回应先生。我想基于某些字符串而不是空间进行分割,根据空间的不同,在互联网上找到很多简单的教程,但是基于我的问题。我没有找到,所以我创建我的问题。 –

+0

你好,好吧,将'/'或' - '加入你想要分割的字符串会更容易。 –

+0

请参阅我的编辑版本。这是拆分字符串的最佳方法。 –

0

你可以把一组里面有所有位置就像

Set<String> positions = new HashSet<String>(); 
     positions.add("Software_Engineer"); 
     positions.add("QA"); 
     String test="John Software_Engineer Kartika QA Xing Project_Manager Mark CEO Celina Assistant_Developer"; 
     List<String> positionsInString = new ArrayList<String>(); 
     Iterator<String> iterator = positions.iterator(); 
     while (iterator.hasNext()) { 
     String position = (String) iterator.next(); 
     if(test.contains(position)){ 
      positionsInString.add(position); 
      break; 
     } 
     } 
1

你可以用名称的字符串:岗位和空间。那么它将很容易获得欲望值。

String test="John:Software_Engineer Kartika:QA Xing:Project_Manager" 
1

我无法评论,因为我的声望较低。因此我在这里写作。

您的第一个字符串拆分问题可以概括为位置字拆分。如果确保您需要所有均匀位置的字符串,则可以首先根据空间拆分字符串,然后拉出所有偶数位置字符串。

关于AND的第二个问题,或者&或拆分,可以用单个字符串“”替换所有“AND”&“OR”,并且可以用单个空格字符串“”拆分输出字符串。

在第三个问题上,用单个空格字符串“”替换“IF”&“END”,我不确定最后一个IF是否出现在您的字符串中。如果是这样,你可以用空字符串“”替换它,然后根据单个空格字符串“”拆分字符串。

首先根据模式对输入字符串进行分类,并且在使用Java之前请设计一个算法。

我建议你使用StringBuffer或StringBuilder而不是直接使用字符串,因为与上面的比较时字符串操作的代价很高。