importfile regexp thousands separator returns NaN when negative
2 ビュー (過去 30 日間)
古いコメントを表示
I used "Import Data" to generate a function importfile for importing a csv file. Unfortunately, the function returns NaN for every number less than or equal to -1,000.
When I step through the generated code, I discover that the error happens in the following code:
% Detected commas in non-thousand locations.
invalidThousandsSeparator = false;
if numbers.contains(',')
thousandsRegExp = '^\d+?(\,\d{3})*\.{0,1}\d*$';
if isempty(regexp(numbers, thousandsRegExp, 'once'))
numbers = NaN;
invalidThousandsSeparator = true;
end
end
Let's say that:
numbers = "-1,167.67627";
Then:
regexp(numbers, thousandsRegExp, 'once')
ans =
[]
Hence, the code returns a NaN when it should be giving me a number of -1167.67627.
Compare this to the result when the number is positive:
numbers = "1,167.67627";
regexp(numbers, thousandsRegExp, 'once')
ans =
1
Obviously, the error comes from the following code, but I have no idea how to fix this 'matched regular expression':
thousandsRegExp = '^\d+?(\,\d{3})*\.{0,1}\d*$';
0 件のコメント
採用された回答
madhan ravi
2019 年 7 月 17 日
str2double(regexprep(numbers,',',''))
2 件のコメント
madhan ravi
2019 年 7 月 17 日
Attach your data file and illustrate what you want the desired result to be.
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Database Toolbox についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!