2013-12-11 70 views
2

我是MatLab的初學者,但是我在java中有很多經驗。我正在循環一個字符串,但我需要能夠從java中執行一個簡單的方法,如charAt()。我已經看過堆棧溢出,並試圖谷歌任何等效的方法,但我一直沒有解決方案。有任何想法嗎?MatLab相當於java中的charAt()

+0

給出的答案是正確的,但是:您應該考慮不循環字符串。在很多情況下,Matlab可以通過矢量化更快速,更優雅地完成操作。 http://www.mathworks.com/help/matlab/matlab_prog/vectorization.html –

回答

2

如果您是通過現有字符串的循環,將是這樣的:

mystring = 'example'; % The string 
for ind = 1:length(mystring) % For loop from beginning to end of string 
    current_char = mystring(ind); % Character at the current index of the string 
    fprintf(current_char); % Prints the character to screen 
end 

for循環結束後的最終打印輸出會在這種情況下閱讀example

在Matlab中的字符串向量被視爲就像任何其他載體中,則可以使用其中v(ind)ind要訪問的元素的索引訪問矢量v的元件。這是行current_char = mystring(ind)中正在發生的事情。閱讀進一步的信息:http://www.mathworks.com/company/newsletters/articles/matrix-indexing-in-matlab.html

+0

我收到一個錯誤:'Warning:string is obsolete and will be discontinued。使用char替代.' – user3089676

+0

對不起,最初在我的代碼中有一個錯誤(有「字符串」而不是「mystring」)。我在編輯中糾正了它。 –

1

您可以在MATLAB使用charAt從Java,如果你想:

str = 'somestring'; 
strJava = java.lang.String(str); % convert to java string 
strJava.charAt(5) 
ans = 

t 
+0

謝謝,但它明確必須是Matlab – user3089676

3

字符串只是在Matlab陣列。所以,你可以輕鬆地創建自己的簡單charAt功能:

str = 'somestring'; 
charAt = @(str,idx)str(idx); 

然後charAt(str,5)將返回s(這個簡單的功能不輸入驗證)。但是,直接索引字符串通常會更容易:str(5)

請注意,Java的charAt使用從零開始的索引,而Matlab是基於一切的。您可以使用idx+1來模擬Java版本進行補償。