Find and Replace (MATLAB)

38 visualizaciones (últimos 30 días)
Deborah Johnson
Deborah Johnson el 7 de Jun. de 2022
Editada: Deborah Johnson el 11 de Jun. de 2022
I am trying to find and replace text string before a comma and keep the data string after the comma. I have tried the wildcard '*' but it didn't work. I have 55 states to do this to. An example is 'Adak Island, AK' to just "AK".
repeats = ' , AK'
indices = strfind(repeats, 'AK')
indices = 4
using_replace = replace(repeats, ' , AK', 'AK')
nothing changed, the text string stayed the same. Any suggestions?

Respuesta aceptada

Sean de Wolski
Sean de Wolski el 7 de Jun. de 2022
strip(extractAfter('Adak Island, AK',","))
ans = 'AK'
And see the other fun methods of string to figure out how to manipulate the part you want
methods('string')
Methods for class string: append contains eq extractAfter gt issorted lt pad reverse startsWith cellstr count erase extractBefore insertAfter join matches plus sort strip char double eraseBetween extractBetween insertBefore le ne replace split strlength compose endsWith extract ge ismissing lower or replaceBetween splitlines upper
  3 comentarios
Sean de Wolski
Sean de Wolski el 7 de Jun. de 2022
This will stick it back in as a new variable in the table called State
T = readtable('County_STATE.csv');
T.State = extractAfter(T.DISPLAY_AIRPORT_CITY_NAME_FULL,", ");
Deborah Johnson
Deborah Johnson el 10 de Jun. de 2022
Hello Sean,
This worked! All the rows were edited and only leaving the STATE name. I repeated the same step to verify and Thank You!
T.State = extractAfter(T.DISPLAY_AIRPORT_CITY_NAME_FULL,", ");

Iniciar sesión para comentar.

Más respuestas (4)

Image Analyst
Image Analyst el 10 de Jun. de 2022
Editada: Image Analyst el 10 de Jun. de 2022
Try this:
t = readtable('County_STATE.csv');
% Crop off null columns
t = t(:, 1:3);
% Extract State alone, and City alone.
State = extractAfter(t.DISPLAY_AIRPORT_CITY_NAME_FULL, ', ');
City = extractBefore(t.DISPLAY_AIRPORT_CITY_NAME_FULL, ', ');
% Add these on as columns in the table variable.
t = addvars(t, City, State, 'After','DISPLAY_AIRPORT_CITY_NAME_FULL')
t = 18×5 table
AIRPORT DISPLAY_AIRPORT_NAME DISPLAY_AIRPORT_CITY_NAME_FULL City State _______ _____________________________________ ______________________________ _______________ ______ {'ADK'} {'Adak NS' } {'Adak Island, AK'} {'Adak Island'} {'AK'} {'ANC'} {'Anchorage International' } {'Anchorage, AK' } {'Anchorage' } {'AK'} {'ADQ'} {'Kodiak Airport' } {'Kodiak, AK' } {'Kodiak' } {'AK'} {'AKN'} {'King Salmon Airport' } {'King Salmon, AK'} {'King Salmon'} {'AK'} {'BET'} {'Bethel Airport' } {'Bethel, AK' } {'Bethel' } {'AK'} {'BRW'} {'Wiley Post/Will Rogers Memorial' } {'Barrow, AK' } {'Barrow' } {'AK'} {'CDV'} {'Cordova Mile 13' } {'Cordova, AK' } {'Cordova' } {'AK'} {'DLG'} {'Dillingham Airport' } {'Dillingham, AK' } {'Dillingham' } {'AK'} {'FAI'} {'Fairbanks International' } {'Fairbanks, AK' } {'Fairbanks' } {'AK'} {'GST'} {'Gustavus Airport' } {'Gustavus, AK' } {'Gustavus' } {'AK'} {'JNU'} {'Juneau International' } {'Juneau, AK' } {'Juneau' } {'AK'} {'KTN'} {'Ketchikan International' } {'Ketchikan, AK' } {'Ketchikan' } {'AK'} {'OTZ'} {'Ralph Wien Memorial' } {'Kotzebue, AK' } {'Kotzebue' } {'AK'} {'OME'} {'Nome Airport' } {'Nome, AK' } {'Nome' } {'AK'} {'ABI'} {'Abilene Regional' } {'Abilene, TX' } {'Abilene' } {'TX'} {'ABQ'} {'Albuquerque International Sunport'} {'Albuquerque, NM'} {'Albuquerque'} {'NM'}

Image Analyst
Image Analyst el 7 de Jun. de 2022
Why not just do this:
str = 'Adak Island, AK' ;
commaIndex = strfind(str, ',')
commaIndex = 12
if ~isempty(commaIndex)
output = strtrim(str(commaIndex+1 : end))
else
output = str % No comma in the string so just return the original.
end
output = 'AK'
  4 comentarios
Image Analyst
Image Analyst el 7 de Jun. de 2022
You gave us a character array. Please give us the data in the form of a table in a mat file with the paperclip icon so we can show you how to apply it to a table. Did you try just going down the column row by row?
Deborah Johnson
Deborah Johnson el 7 de Jun. de 2022
I have attached the file. I'm trying to edit the 3rd column to show just the STATE and remove/erase (extractAfter).
What am I not seeing?

Iniciar sesión para comentar.


Steven Lord
Steven Lord el 7 de Jun. de 2022
Functions like extract, extractAfter, etc. don't modify the variables that you pass in as input. If you were to specify those same variable names as the output argument for those calls then they would be modified.
fruit = "Apple, Banana, Cherry"
fruit = "Apple, Banana, Cherry"
The following call creates a new variable named justCherry and leaves the fruit variable with its original contents.
justCherry = extractAfter(fruit, "Banana, ")
justCherry = "Cherry"
fruit
fruit = "Apple, Banana, Cherry"
The following call overwrites the existing variable named fruit with the output of extractAfter, so fruit is different after the call.
fruit = extractAfter(fruit, "Banana, ")
fruit = "Cherry"
fruit
fruit = "Cherry"
Your original code using_replace = replace(repeats, ' , AK', 'AK') does not modify the repeats variable.
If you'd written repeats = replace(repeats, ' , AK', 'AK') that would overwrite the original contents of the repeats variable with the modified data returned by replace.

Deborah Johnson
Deborah Johnson el 10 de Jun. de 2022
Editada: Deborah Johnson el 11 de Jun. de 2022
I tried it when I got home and really appreciate your time and assistance! Thank You so much!

Categorías

Más información sobre Characters and Strings en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2022a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by