我想为我的图像视图(例如“ Peter Parker”)使用两个单词的缩略词首字母缩略词,但在运行代码时只能获得一个单词“ P”,而如何在我的代码占位后获得第二个单词。
holder.imgName?.text=teamData[position].userImage.substring(0,1)
答案 0 :(得分:4)
您可以通过功能性方式进行操作
val peterParker = "Peter Parker"
val initials = peterParker
.split(' ')
.mapNotNull { it.firstOrNull()?.toString() }
.reduce { acc, s -> acc + s }
println(initials) //PP
这将涵盖一个人的名字包含两个以上单词的情况。
答案 1 :(得分:0)
嗨,您可以使用以下方式
String str = "FirstWord SecondWOrd";
String[] strArray = str.split(" ");
StringBuilder builder = new StringBuilder();
if (strArray.length > 0)
builder.append(strArray[0], 0, 1);
if (strArray.length > 1)
builder.append(strArray[1], 0, 1);
Log.d("New Text" , builder.toString());
答案 2 :(得分:0)
就像您使用子字符串只抓住位置0到位置1的字母,这是Petter中的P
holder.imgName?.text=teamData[position].userImage
.substring(0,1)
如果您想使用Petter Parker一词,则有几种选择。
•IndexOf&Substring-查找字符串的位置并在其后获取子文本。
•Substring-基于参数的字符串的子文本
如果您打算在任何阶段更改文本长度,则需要找到单词的开头(int start = yourString.indexOf("Petter")
);
(int end = yourString.indexOf(" "
的结尾)
IndexOf将返回查询中第一个字母的位置-您的情况是P在Petter中--因此start +“ petter” .length()
这是我正在使用的条形码价格检查器应用程序的示例
// STRING FORMAT 00000899999:0.99
String currentLine = "00000899999:0.99";
int breakPoint = currentLine.indexOf(":");
int end = currentLine.length();
int start = breakPoint + 1;
String Price = currentLine.substring(start,end);
价格将以(:)开头为+1或以(:)开头而不为+ 1,并以行长结束。
答案 3 :(得分:0)
我做了一些技巧,并用Button大声笑实现了这个头像; p
创建 profile_bg.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid
android:color="@color/colorWhite"/>
<corners
android:radius="500dp"/>
</shape>
然后 main_activity.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#4300313A"
tools:context=".MainActivity">
<Button
android:onClick="clicked"
android:id="@+id/avatar"
android:clickable="false"
android:focusable="false"
android:textColor="@color/colorPrimary"
android:textSize="65sp"
android:focusableInTouchMode="false"
android:layout_width="150dp"
android:layout_height="150dp"
android:background="@drawable/profile_bg"
android:layout_centerHorizontal="true"
android:layout_marginTop="50dp"/>
<EditText
android:id="@+id/edtname"
android:layout_below="@+id/avatar"
android:layout_centerHorizontal="true"
android:layout_marginTop="50dp"
android:layout_width="250dp"
android:layout_height="wrap_content"
android:textSize="18sp"
android:hint="Enter your name"/>
<Button
android:onClick="clicked"
android:textColor="@color/colorBackground"
android:text="Submit Name"
android:textStyle="bold"
android:focusableInTouchMode="false"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_below="@+id/edtname"
android:layout_marginTop="50dp"/>
</RelativeLayout>
然后在 MainActivity.java 中进行(拆分字符串并使用stringbuilder在if条件下获取每个单词的第一个字母〜名称)
public class MainActivity extends AppCompatActivity {
EditText editText;
Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = (EditText) findViewById(R.id.edtname);
button = (Button) findViewById(R.id.avatar);
}
public void clicked(View view) {
String str = editText.getText().toString();
String[] strArray = str.split(" ");
StringBuilder builder = new StringBuilder();
//First name
if (strArray.length > 0){
builder.append(strArray[0], 0, 1);
}
//Middle name
if (strArray.length > 1){
builder.append(strArray[1], 0, 1);
}
//Surname
if (strArray.length > 2){
builder.append(strArray[2], 0, 1);
}
button.setText(builder.toString());
}
}