0
文字列から数値を取得したい。このクラスの文字列から数値を取得するsubstring()が機能していない
マイコードは次のとおりです。
XMLは正しいダウンロードされ、それは私の値の文字列を設立しかし、私は、文字列から数値を取得していません。 innerValue
で
public class XMLProcessor extends AsyncTask<String, Void, String> {
private String rssURL;
private PostParserDelegate delegate;
private ArrayList<Post> posts;
String euro;
private StringBuilder buffer;
TextView mxntoeur;
TextView eurtomxn;
public XMLProcessor(String rssURL, PostParserDelegate delegate) {
this.rssURL = rssURL;
this.delegate = delegate;
posts = new ArrayList<Post>();
}
@Override
protected String doInBackground(String... strings) {
buffer = new StringBuilder();
try {
URL url = new URL(rssURL);
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
// HTTP Status "OK" -> HTTPCODE 200
int httpResponse = httpURLConnection.getResponseCode();
if (httpResponse != 200) {
throw new Exception("Fehlercode: " + httpResponse);
}
InputStream input = httpURLConnection.getInputStream();
InputStreamReader reader = new InputStreamReader(input);
int charactersRead;
char[] tmpChars = new char[400];
while (true) {
charactersRead = reader.read(tmpChars);
if (charactersRead <= 0) {
break;
}
buffer.append(String.copyValueOf(tmpChars, 0, charactersRead));
}
return buffer.toString();
} catch (Exception e) {
Log.e("XMLProcessor", e.getMessage());
Log.e("XMLProcessor", e.getStackTrace().toString());
}
return String.valueOf(0);
}
@Override
protected void onPostExecute(String aDouble) {
super.onPostExecute(aDouble);
parse();
}
protected void parse()
{
String rawXML = buffer.toString();
Post aPost = null;
boolean isProcessingItem = false;
String innerValue ="";
try {
XmlPullParserFactory pullParserFactory = XmlPullParserFactory.newInstance();
XmlPullParser parser = pullParserFactory.newPullParser();
parser.setInput(new StringReader(rawXML));
int event = parser.getEventType();
while (event !=XmlPullParser.END_DOCUMENT)
{
String tag = parser.getName();
switch (event) {
case XmlPullParser.START_TAG:
if (tag == "item") {
Log.d("XMLProcessor", "Neuer Post!");
isProcessingItem = true;
aPost = new Post();
}
break;
case XmlPullParser.TEXT:
innerValue = parser.getText();
break;
case XmlPullParser.END_TAG:
if (isProcessingItem){
if (tag == "item") {
posts.add(aPost);
isProcessingItem = false;
}
} else if (tag == "description") {
aPost.setPesoInEuro(innerValue);
euro = new String(innerValue.substring(13,21));
//euro = innerValue.substring(13,21);
eurtomxn.setText(euro);
}
break;
}
event = parser.next();
}
delegate.xmlFeedParsed(posts);
} catch (Exception e) {
Log.e("XMLProcess", e.getStackTrace().toString());
}
}
}
私は
/n 1.00 EUR = 21.90612 MXN<br/>\n 1.00 MXN = 0.04565 EUR<br/>\n
<a href="http://eur.de.fxexchangerate.com/mxn/">Converter</a>--\n
<a href="http://eur.de.fxexchangerate.com/mxn-exchange-rates-history.html">Historische
</a>
\n.
を必要とするものを正しいスティングを取得しかし、私の問題は、私はこの数21.90612
を必要とすること、です。私はsubstring(13,21)
で試してみましたが、動作しませんでした。
アイデアはありますか?問題を解決する方法はありますか?
は、それが正確に問題が何であるかを非常に明確ではありませんあなた
"が、それは何の作業ではなかった" という意味?どのように正規表現を使用するのですか? –
また、javaの文字列とequalsを比較し、 'new String(someString)'は*コードの臭いです* –
私はこのコードでも試しています: "euro = innerValue.substring(13,21);"だから私はindexnumer 13から21までの文字列を持って来なければならないので、変数 "ユーロ"に数値を書き込まなければなりません。この変数は、私はそれがユーロは倍精度変数であり、私はそれが文字列であることを試してみることがあります。しかし、この変数は常にnullです。 – Max