2012-11-14 2 views
1

J'essaye d'analyser une chaîne et j'ai besoin d'utiliser la sous-chaîne pour le faire. La chaîne contient les caractères apostrophe. Ma question est, comment puis-je utiliser temp pour obtenir String.indexOf pour obtenir l'index du caractère apostrophe?Java: Utilisation de String.indexOf() pour rechercher le caractère apostrophe

//temp variable currently contains the string 'hello' including the apostrophe character 
String finalWord = temp.substring(temp.indexOf('''), temp.indexOf('.')); 
+0

Que vous * vraiment * essayez de faire? Je suis sûr que vous ne vous souciez pas vraiment de l'endroit où se situe l'apostrophe. Essayez-vous d'obtenir tous les caractères entre apostrophe, ou supprimer les apostrophes, ou quoi? – Bohemian

+0

Je suis vraiment sérieusement essayer de trouver un moyen de stocker chaque mot qui apostrophe autour d'elle, dans sa propre variable, sans les apostrophes. – AnchovyLegend

+0

Voir ma réponse pour une approche plus directe – Bohemian

Répondre

9

Votre nom de variable est erroné (final est un mot réservé) et vous devez utiliser le caractère d'échappement:

String finalword = temp.substring(temp.indexOf('\''), temp.indexOf('.')); 
+0

@MHZ Veuillez copier-coller votre code exact dans votre question afin que nous puissions voir ce qui se passe. – Bohemian

+0

J'ai trouvé le problème, merci! :) Cela fonctionne parfaitement. – AnchovyLegend

0

Sur la base de votre dernier commentaire, qui déclare ce que vous êtes en fait essayer de faire ...

Il y a une solution simple d'une ligne pour extraire chaque chaîne entre guillemets de l'entrée-apostrophe:

String[] quotedStrings = input.replaceAll("^.*?'|'[^']*$", "").split("'.*?('|$)"); 

Voici un code de test:

public static void main(String[] args) { 
    String input = "xxx'foo'xxx'bar'xxx'baz'xxx"; 
    String[] quotedStrings = input.replaceAll("^.*?'|'[^']*$", "").split("'.*?('|$)"); 
    System.out.println(Arrays.toString(quotedStrings)); 
} 

Sortie:

[foo, bar, baz] 
Questions connexes