[GIS] Renaming a variable input to replace spaces with underscores to be used in an output’s name

arcgis-10.1arcgis-desktopfeature-classmodelbuilder

This may be easier than i am making it. Using Model Builder, I have a variable input "Name", which is set as a model parameter, used for a 'Select by Attribute' early in the model. I would like to then use this variable as an input into the final feature class output's name. My issue is that some of these "Names" have spaces in them (E.G. Name = "Watershed 1"). Is there a way, using Model Builder, that i can replace the spaces with underscores/remove the spaces before inserting the variable into the output's name?

Resulting in (….spatialjoin_dissolve_Watershed_1)

Since this model will be run individually for multiple areas i need the name of the watershed to be included, without having to have the user enter in the watershed name with underscores as a parameter.

Thanks for any help!

Best Answer

You can do this using the Calculate Value tool to modify the "Name" string variable to replace spaces with underscores. When you are saving the Spatial Join feature class output, you can then use inline variable substitution:

C:\gisworkspace\WORKSPACE\testing_workspace\%output_value%.shp

....where 'output_value' is the output name from the Calculate value tool.

Here is what the parameters of the Calculate Value could look like:

Expression:

ReplaceName('%StringInput%')

....where 'StringInput' is the name of your 'Name' model parameter

Code Block:

def ReplaceName(name) :
  return name.replace(" ", "_")

Data type:

String

Here is a quick example in ModelBuilder:

enter image description here

Full Size Image