"abcdefghijk"というような文字列を
例(1):abcd、efg、h、i、jk
例(2):ab、cdefg、h、ijk
例(3):a、b、c、de、f、ghijk
のように分割したいのですが、substringを使って取得するしかないでしょうか。
素人考えですみませんが、
class test{
char[] a = new char[4];
char[] b = new char[3];
char c;
char d;
char[] e = new char[2];
}
のようなクラスを作り、
test t = new test();
t = "abcdefghijk";
などどすることで、分割する方法はないでしょうか。
#上記を試したところ、互換性のない型とエラーになりました。
分割するパターンが複数あり、文字列が長くなるとsubstringを記述する回数が増え、
終了インデックスを間違えそうで。
#間違えないようにすればいいだけの話ですが。
substring以外の方法、またはsubstringの上手な使い方がありましたら、教えていただけないでしょうか。
よろしくお願いします。
No.3ベストアンサー
- 回答日時:
こんなのとか
public class Main {
public static void main(String[] args) {
int[] points = { 4, 7, 8, 9 };
Test test = new Test("abcdefghijk", points);
System.out.println(test);
}
}
public class Test {
private ArrayList<String> strs = new ArrayList<String>();
public Test(String str, int[] points) {
int count = 0;
StringBuffer sb = new StringBuffer();
for( int i = 0; i < str.length(); i++ ) {
char c = str.charAt(i);
if( count < points.length && i == points[count] ) {
strs.add(sb.toString());
sb = new StringBuffer();
count++;
}
sb.append(c);
}
strs.add(sb.toString());
}
public String toString() {
StringBuffer sb = new StringBuffer();
for( String str : strs ) {
sb.append(str).append(",");
}
return sb.deleteCharAt(sb.length() - 1).toString();
}
}
No.2
- 回答日時:
活用できるか わからないですが
文字数の分岐は 固定値として持たれている場合に
(なので あんまり 再利用には向いてないかもです)
import java.util.ArrayList;
public class Main {
int[] moji = new int[]{4, 3, 1, 1, 2}; //文字の切り分け方
ArrayList al = new ArrayList();
public static void main(String[] args) {
Main t = new Main();
}
public Main() {
try {
String inStr = "abcdefghijk"; //分割する文字列
check(inStr); //文字数チェック
setStr(inStr); //ArrayList に 分割文字格納
alPrint(al); //とりあへず出力
} catch (Exception e) {
e.printStackTrace();
}
}
void setStr(String str) {
int count = 0;
for (int i = 0; i < moji.length; i++) {
al.add(str.substring(count, count += moji[i]));
}
}
void alPrint(ArrayList al) {
for (int i = 0; i < al.size(); i++) {
System.out.println(al.get(i));
}
}
void check(String inStr) throws Exception {
int len = 0;
for (int i = 0; i < moji.length; i++) {
len += moji[i];
}
if (len != inStr.length()) {
throw new Exception("文字数不一致");
}
}
}
可視性とかそっち系統は 一切考慮してません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# c言語 コマンドライン引数 4 2023/02/09 18:47
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
- C言語・C++・C# c言語でユーザ関数を利用して入力された文字列を反転させるプログラムを作りたいです。 3 2023/01/29 19:47
- C言語・C++・C# 【C言語】全角文字の配列を、全角のまま1文字ずつ出力する方法 4 2023/05/09 15:08
- C言語・C++・C# c言語 int temp = 0; if(isdigit(arr[i])){ temp=arr[i] 2 2022/03/27 01:44
- C言語・C++・C# const char** p;のとき、free(p)でC4090エラーとなるのはなぜですか 3 2023/03/31 16:28
- C言語・C++・C# C言語について コマンドラインで >変数 12.00 (char型) と、小数点付きの値を共用体に渡 1 2022/04/22 16:56
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・ハマっている「お菓子」を教えて!
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
java spring でエラーが出て困...
-
三目並べ(Tick-Tack-Toe)をJav...
-
Stringの100と100.0を同一とみ...
-
「配列定数は、イニシャライザ...
-
JAVA エラー 式の開始が不正で...
-
C#で、デリゲートからその関数...
-
javaでcsvファイル読込時の改行...
-
(Swing)JTextFieldを半角のみ入...
-
複数のボタンを配置し、それぞ...
-
Javaプログラムについての質問...
-
DataSet(DataTable)の使い方
-
SwingでJtableのヘッダ行が表示...
-
Stringの文字列をString[]配列...
-
Java エラーについて
-
式の型は配列型で int に解決済...
-
C言語のポインターに関する警告
-
IF関数でEmpty値を設定する方法。
-
オブジェクトの中のプロパティ...
-
Java 入力した整数値の合計を、...
-
ORA-01858: 数値を指定する箇所...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「配列定数は、イニシャライザ...
-
式の型は配列型で int に解決済...
-
JAVA エラー 式の開始が不正で...
-
sin曲線とcos曲線を描くプログ...
-
メインが含まれていません
-
JAVAでCの関数ポインタのような...
-
(Swing)JTextFieldを半角のみ入...
-
javaでcsvファイル読込時の改行...
-
DataSet(DataTable)の使い方
-
6桁の数字を重複なしでランダム...
-
c# デリゲート関連の命名について
-
C#で実行時にメソッドの返り値...
-
java spring でエラーが出て困...
-
共有メモリについて
-
randomメゾットについて
-
行の途中から読み込む方法
-
【C#】フォームをなめらかに移動
-
アンマネージDLLで、ダイアログ...
-
偶数奇数の判定
-
SwingでJtableのヘッダ行が表示...
おすすめ情報