2014-04-03 84 views
0

例如列表的成员,如果我有字符串:查找字符串是否包含字符串

“所有的世界苹果是圆的像橙子和草莓,但他们并不像香蕉。另一方面,西瓜又像菠萝一样大,苹果是红色的,香蕉是黄色的。“

我想查找并替换字符串中的所有水果。我有一个清单:
fruit[apples, oranges, strawberries, bananas, watermelons, pineapples]
我需要用所谓的蔬菜代替它们,指定了映射(例如'apples'='cabbage'),因此它是一个简单的查找和替换。说字符串继续,一些果实重复自己。

对每个列表成员使用'While'循环并对每个列表成员做一个Replace是否有更简单的方法?

回答

2

这是我对你的问题,创建两个数组,一个是水果找到,一个是在同一地址替换vegies。

将数组循环更换。

Sub Main() 
Dim X As Long, FruitArr As Variant, VegArr As Variant, MyStr As String 
FruitArr = Array("apples", "oranges", "strawberries", "bananas", "watermelons", "pineapples") 
VegArr = Array("cabbages", "potatoes", "brussell sprouts", "cucumbers", "lettuces", "eggplants") 
MyStr = "All the apples in the world are round like oranges and strawberries, but they do not look like bananas. watermelons on the other hand are big like pineapples. apples are red and bananas are yellow." 
For X = UBound(FruitArr) To LBound(FruitArr) Step -1 
    MyStr = Replace(MyStr, FruitArr(X), VegArr(X)) 
Next 
Debug.Print MyStr 
End Sub 

编辑:改变从LBOUND顺序UBOUND其他方式轮。这是菠萝在苹果前被测试和替换,否则菠萝的苹果部分被错误地转换。

+0

很好完成.. 。! – Santosh

+0

18个月后,我想我想出了一个类似的解决方案(实际上我忘了这是为了什么!)但感谢您回答:) –

+0

是的人们看到,编辑旧帖子,使他们在屏幕上,我甚至没有注意到这个日期:) –

0

试试这个

Sub Main() 

    Dim i As Integer 
    Dim str As String 
    Dim fruits As String 
    Dim fruitArr() As String 

    str = "All the apples in the world are round like oranges and strawberries, but they do not look like bananas." & _ 
      "Watermelons on the other hand are big like pineapples. Apples are red and bananas are yellow." 

    If InStr(1, str, "apples") > 0 Then 

     fruits = "apples, oranges, strawberries, bananas, watermelons, pineapples" 


     fruitArr = Split(fruits, ",") 

     For i = LBound(fruitArr) To UBound(fruitArr) 

      If fruitArr(i) = "apples" Then 
       str = Replace(str, "apples", "cabbage") 
      End If 

     Next 
    End If 

    Debug.Print str 
End Sub 
+0

不完全... for循环应该检查字符串CONTAINS'苹果'而不是'苹果'。 –

+0

@EvilWashingMachine请参阅更新的代码。我已经添加了一个检查,看看苹果是否存在于数据字符串中。 – Santosh

+0

仅供参考桑托斯,你可以直接做'fruitArr =数组(“苹果”,“橙子”,“草莓”,“香蕉”,“西瓜”,“菠萝”)'并且消除分割 –

相关问题