[解決済み] 文字列の長さに応じて文字列をトリミングする
質問内容
文字列の長さが10文字を超えたら切り捨てたい。
例えば、文字列の長さが12であったとします (
String s="abcdafghijkl"
を含むことになります。
"abcdefgh.."
.
どうすれば実現できるのでしょうか?
どのように解決するのですか?
s = s.substring(0, Math.min(s.length(), 10));
使用方法
Math.min
よりも既に短い文字列がある場合に例外が発生するのを防ぎます。
10
.
注意事項
-
上記は単純なトリミングを行うものです。 もし、文字列が長すぎる場合、最後の文字を3つのドットに置き換えたい場合は、Apache Commonsの
StringUtils.abbreviate
を参照してください。 解決策 . Unicode の水平方向の省略記号を使いたい場合は、@Basil さんの 解決策 . -
の典型的な実装の場合
String
,s.substring(0, s.length())
を返します。s
を新たに確保するのではなくString
. -
この場合、動作がおかしくなる可能性があります 1 文字列がBMP以外のUnicodeコードポイントを含んでいる場合(例:Emojis)。 すべての Unicode コードポイントに対して正しく動作する(より複雑な)解決策については、@sibnick の 解決策 .
1 - 平面 0(BMP)上にない Unicode コードポイントは、"代理ペア" として表されます(つまり、2 つのコードポイントがあります)。
char
の値)を
String
. これを無視すると、文字列を10コードポイント未満に切り詰めたり、(最悪)サロゲートペアの途中で切り詰めたりする可能性がある。 一方
String.length()
は Unicode テキストの長さを表す良い尺度ではないので、その特性に基づいてトリミングするのは間違ったことかもしれません。
関連
-
[解決済み】Java JDK - doubleからintへの非可逆変換の可能性
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] JavaでStringをintに変換するにはどうしたらいいですか?
-
[解決済み] JavaScriptでランダムな文字列/文字を生成する
-
[解決済み] Javaで文字列を分割する方法
-
[解決済み】JavaScriptで文字列の出現箇所をすべて置換する方法
-
[解決済み】Bashでファイル名と拡張子を抽出する。
-
[解決済み】大文字と数字を含むランダムな文字列の生成
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】エラー:'if'のない'else'エラー
-
[解決済み】代入の左手は必ず変数 CharAt
-
[解決済み] java のクラス内のコンストラクタは、指定された型に適用できない
-
[解決済み】宣言されたパッケージが期待されるパッケージと一致しない ""
-
[解決済み】Javaクラスの "型に解決できない"
-
[解決済み] 解決済み】Javaが「型をインスタンス化できない」というエラーを返す [重複] [重複]
-
[解決済み】「error: '.class' expected」の意味と修正方法について
-
[解決済み】ソースルート外のJavaファイル intelliJ
-
[解決済み] 文字列の最初のn文字を、サイズをチェックしたり、境界外に出たりせずに取得するにはどうしたらよいですか?
-
[解決済み] 実際に使われている非BMPのUnicode文字で最も多いものは何ですか?[クローズド]