2010-04-22 104 views
0

如何找到字符串内的子字符串,然后在找到它时记住并删除它。在字符串内部找到子字符串

例:

select * from (select a.iid_organizacijske_enote, 
     a.sifra_organizacijske_enote "Sifra OE", 
     a.naziv_organizacijske_enote "Naziv OE", 
     a.tip_organizacijske_enote "Tip OE" 

我想进去 “” 所有的字,所以

  • Sifra OE
  • Naziv OE
  • TIP OE

和返回

select * from (select a.iid_organizacijske_enote, 
     a.sifra_organizacijske_enote, 
     a.naziv_organizacijske_enote, 
     a.tip_organizacijske_enote 

我尝试用正则表达式,indexOf()但没有一个好的工作

+1

请注意,只是说一些不起作用通常不会很有帮助... http://blogs.msdn.com/oldnewthing/archive/2010/04/21/9999675.aspx – Joey 2010-04-22 09:41:35

回答

1

考虑在捕获组中使用正则表达式。使用Java的Matcher类,您可以找到第一个匹配项,然后使用replaceFirst(String)。

- 编辑 -

例子(没有有效的长期投入):

String in = "hello \"there\", \"friend!\""; 
Pattern p = Pattern.compile("\\\"([^\"]*)\\\""); 
Matcher m = p.matcher(in); 
while(m.find()){ 
    System.out.println(m.group(1)); 
    in = m.replaceFirst(""); 
    m = p.matcher(in); 
} 
System.out.println(in); 
+0

也许你有任何例子吗? – senzacionale 2010-04-22 09:46:15

3

String.replace(..)

替换此字符串与指定的文字替换序列字面目标序列匹配的每个子字符串。替换从字符串开始到结束,例如,用字符串“aaa”中的“b”替换“aa”将导致“ba”而不是“ab”。

str = str.replace(wordToRemove, ""); 

如果你不提前知道的话,你可以使用regex version

str = str.replaceAll("\"[^\"]+\"", ""); 

这意味着,所有的字符串开始,除非报价与行情结束,因为任何字符在它们之间,将被替换为空字符串。

+0

thx求助Bozho – senzacionale 2010-04-22 11:25:24

1

我试图创造功能如下 - 它的做工精细,并返回输出你想

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      Program p = new Program(); 
      string s = p.mystring("select * from (select a.iid_organizacijske_enote, a.sifra_organizacijske_enote 'Sifra OE', " 
     +"a.naziv_organizacijske_enote 'Naziv OE', "+ 
     "a.tip_organizacijske_enote 'Tip OE'"); 
     } 


     public string mystring(string s) 
     { 
      if (s.IndexOf("'") > 0) 
      { 
       string test = s.Substring(0, s.IndexOf("'")); 
       s = s.Replace(test+"'", ""); 

       s = s.Remove(0, s.IndexOf("'") + 1); 
       test = test.Replace("'", ""); 
       test = test + s; 
       return mystring(test); 
      } 
      else 
      { 
       return s; 
      } 
     } 
    } 
} 
+0

老板!他把这个问题标记为java,为什么在c#中回答。在你得到downvotes之前删除。 – 2010-04-22 10:20:39

+0

我知道这个函数在java中也能正常工作 – 2010-04-22 10:24:03

+0

thx for help pranay – senzacionale 2010-04-22 11:25:08

0

最好&优化的代码是在这里:

public static void main(String[] args){ 
    int j =0; 
    boolean substr = true; 
    String mainStr = "abcdefgh"; 
    String ipStr = "efg"; 
    for(int i=0 ; i < mainStr.length();i++){ 
     if(j<ipStr.length() && mainStr.charAt(i)==ipStr.charAt(j)){ 
      j++; 
     }    
    } 
    if(j>=0 && j !=ipStr.length()){ 
     substr = false; 
    } 
    System.out.println("its a substring:"+substr); 
}