Find and Replace (MATLAB)

7 ビュー (過去 30 日間)
Deborah Johnson
Deborah Johnson 2022 年 6 月 7 日
編集済み: Deborah Johnson 2022 年 6 月 11 日
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?


Sean de Wolski
Sean de Wolski 2022 年 6 月 7 日
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 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 件のコメント
Deborah Johnson
Deborah Johnson 2022 年 6 月 10 日
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,", ");


その他の回答 (4 件)

Image Analyst
Image Analyst 2022 年 6 月 10 日
編集済み: Image Analyst 2022 年 6 月 10 日
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 2022 年 6 月 7 日
Why not just do this:
str = 'Adak Island, AK' ;
commaIndex = strfind(str, ',')
commaIndex = 12
if ~isempty(commaIndex)
output = strtrim(str(commaIndex+1 : end))
output = str % No comma in the string so just return the original.
output = 'AK'
  4 件のコメント
Deborah Johnson
Deborah Johnson 2022 年 6 月 7 日
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?


Steven Lord
Steven Lord 2022 年 6 月 7 日
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 = "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 = "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 2022 年 6 月 10 日
編集済み: Deborah Johnson 2022 年 6 月 11 日
I tried it when I got home and really appreciate your time and assistance! Thank You so much!





Community Treasure Hunt

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

Start Hunting!

Translated by