How can I find the number of letters in a string? Just letters (A-Z, a-z)?

 採用された回答

Star Strider
Star Strider 2015 年 5 月 23 日

3 投票

Easiest way:
string = 'This is a string.';
NrLtrs = length(regexpi(string, '[a-zA-Z]'));
The number of letters only is returned in the ‘NrLtrs’ variable.

7 件のコメント

yashar khatib shahidi
yashar khatib shahidi 2015 年 5 月 23 日
I have a question about text files. how to calculate the total number of letters (A-Z, a-z) in the whole text file?
Star Strider
Star Strider 2015 年 5 月 23 日
I would believe the same way. The text file would have to be in the same variable, so you would have to read the entire file in first.
I did like this but it gives error:
fid = fopen(filename, 'rt');
if fid < 0
-1;
return;
end
s = textscan(fid,'%s','Delimiter','\n');
num = length(regexpi(s, '[a-zA-Z]'));
fclose(fid);
disp(num);
Star Strider
Star Strider 2015 年 5 月 23 日
What error does it give?
What line?
Error using regexpi
All cells must be strings.
Error in letter_counter (line 8)
num = length(regexpi(s, '[a-zA-Z]'));
Image Analyst
Image Analyst 2015 年 5 月 23 日
Why are you using textscan to simply get a string. That's too overkill for a simple case like this. Simply use fgetl() if you want to get line by line, or use fread() if you want to suck up the whole file in one shot.
Star Strider
Star Strider 2015 年 5 月 24 日
If it’s a cell, address it as a cell:
string = {'This is a string.'};
NrLtrs = length(regexpi(string{1}, '[a-zA-Z]'));
You will likely have to experiment with this idea in the context of your code to get the result you want.

サインインしてコメントする。

その他の回答 (2 件)

カテゴリ

ヘルプ センター および File ExchangeCharacters and Strings についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by