# Another Search / Replace Substring

## Domino Resources - Part 2

### Looking for something else?

Search and replace of a substring with the ability to replace the first occurence, last occurence or every occurence of the string.
Sub LibReplaceString( sourceStr As String, fromStr As String, toStr As String, what As Integer )

' This function takes a source string and replaces a specified substring with a destination string.
' It provides for the first occurence, last occurence or all occurences of the string to be replaced.

' Inputs : Source String to replace values in, a string to match in the source string and the string to replace with.
' What to replace. First, Last or All occurrences.

' Outputs : Updates passed in source string

' History:
' 08/08/98 - Steven Rieger : Created Function.
' 10/12/98 - Steven Rieger : Added ability to do first, last or all occurences.

Dim tempPosition As Long
Dim currentPosition As Long
Dim counter As Integer
Dim tempStr As String

If( fromStr = toStr ) Then
Print( "Error: FromStr and ToStr must be different" )
Goto Done
End If

If( what = 1 ) Then ' First occurrence only.
tempPosition = Instr( 1, sourceStr, fromStr )
If( tempPosition > 0 ) Then
If( tempPosition = 1 ) Then ' First part of the string
sourceStr = toStr & Right( sourceStr, Len( sourceStr ) - Len( fromStr ) )
Else
If( ( Len( sourceStr ) - Len( fromStr ) ) + 1 = tempPosition ) Then ' Last piece of the string.
sourceStr = Left( sourceStr, tempPosition - 1 ) & toStr
Else ' Middle part of the string
sourceStr = Left( sourceStr, tempPosition - 1 ) & toStr & Right( sourceStr, ( Len( sourceStr ) - tempPosition - Len( fromStr ) ) + 1)
End If
End If
End If
Else
If( what = 2 ) Then ' All occurrences.
tempPosition = Instr( 1, sourceStr, fromStr )
While( tempPosition > 0 )
If( tempPosition = 1 ) Then ' First part of the string
sourceStr = toStr & Right( sourceStr, Len( sourceStr ) - Len( fromStr ) )
Else
If( ( Len( sourceStr ) - Len( fromStr ) ) + 1 = tempPosition ) Then ' Last piece of the string.
sourceStr = Left( sourceStr, tempPosition - 1 ) & toStr
Else ' Middle part of the string
sourceStr = Left( sourceStr, tempPosition - 1 ) & toStr & Right( sourceStr, ( Len( sourceStr ) - tempPosition - Len( fromStr ) ) + 1)
End If
End If
currentPosition = tempPosition + 1
tempPosition = Instr( currentPosition, sourceStr, fromStr )
Wend
Else
If( What = 3 ) Then ' What = 3 is Last Occurences.
tempPosition = Instr( 1, sourceStr, fromStr )
While( tempPosition > 0 )
currentPosition = tempPosition + 1
tempPosition = Instr( currentPosition, sourceStr, fromStr )
Wend
If( currentPosition > 0 ) Then
tempPosition = currentPosition - 1
If( tempPosition = 1 ) Then ' First part of the string
sourceStr = toStr & Right( sourceStr, Len( sourceStr ) - Len( fromStr ) )
Else
If( ( Len( sourceStr ) - Len( fromStr ) ) + 1 = tempPosition ) Then ' Last piece of the string.
sourceStr = Left( sourceStr, tempPosition - 1 ) & toStr
Else ' Middle part of the string
sourceStr = Left( sourceStr, tempPosition - 1 ) & toStr & Right( sourceStr, ( Len( sourceStr ) - tempPosition - Len( fromStr ) ) + 1)
End If
End If
End If
End If
End If
End If

Done:

End Sub

This was last published in November 2000

#### Start the conversation

Send me notifications when other members comment.

## SearchWindowsServer

• ### Tailor a WSUS server setup to any Windows environment

Administrators can configure a Windows Server Update Services server -- or several -- to manage and distribute updates from ...

• ### Microsoft SCORCH lights an automated path to more efficiency

System Center Orchestrator tackles tedious tasks and can even make autonomous decisions based on conditions set by the Windows ...

• ### Ease Windows Update problems by using WSUS servers

To combat various Windows Update problems, administrators should consider implementing a WSUS server to regain control over the ...

## Search400

• ### iSeries tutorials

Search400.com's tutorials provide in-depth information on the iSeries. Our iSeries tutorials address areas you need to know about...

• ### V6R1 upgrade planning checklist

When upgrading to V6R1, make sure your software will be supported, your programs will function and the correct PTFs have been ...

• ### Connecting multiple iSeries systems through DDM

Working with databases over multiple iSeries systems can be simple when remotely connecting logical partitions with distributed ...

## SearchEnterpriseLinux

• ### SUSE Linux jumps on the open private cloud deployment train

SUSE Linux Enterprise planning private cloud deployment with OpenStack weight behind it. NVIDIA works on Linux drivers for ...

• ### Want one of the many Linux jobs out there? Time to go back to class

Does extended education from the Linux Foundation and others help graduates meet the demands of today’s Linux jobs? Some say yes.

• ### Ubuntu ARM server AMI for Amazon EC2 offers fast access in the cloud

Canonical’s Ubuntu ARM server AMI for Amazon EC2 provide open source shops with a fast ARM server for the cloud.

## SearchDataCenter

• ### Compare benefits of a blade server architecture vs. hyper-convergence

To determine if a series of blade servers is the right call for more condensed compute in your data center, evaluate its benefits...

• ### A hyper-converged data center offers SDDC opportunity, IT scalability

Hyper-convergence can increase scalability and pave the way toward software-defined infrastructure. Use these five tips to learn ...

• ### OpenStack enterprise adoption still awaits full embrace

OpenStack in the enterprise is more likely to see continued adoption via vendor distributions and managed services, not the raw ...

## SearchExchange

• ### Access for Office 365 external users a concern for admins

Microsoft added external access for Office 365 Groups, which means administrators must contend with confidentiality and lifecycle...

• ### The essential admin's guide to Office 365 PowerShell

Need to make extensive updates quickly? Admins can rev up their PowerShell skills, bypass the Office 365 management GUI and leave...

• ### Understanding Exchange Online's Role-Based Access Control model

The Role-Based Access Control model manages and evaluates permissions in Exchange Online. Admins can explore the model, create ...

## SearchContentManagement

• ### Five steps for designing an effective BI dashboard

The BI dashboard can be a very useful tool for data engagement if the dashboard is designed and used effectively. Here are five ...

• ### Examining the top offerings in the WCM platform marketplace

Once you've decided that a WCM platform is right for your business, it's time to decide which to choose. Expert Geoffrey Bock ...

• ### Why Microsoft Teams could change up the collaboration software market

Microsoft's new collaboration tool, Teams, could give Slack a run for its money. Expert Reda Chouffani offers a look at five ...

Close