JAVA字符串中取特定字符的位置

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA字符串中取特定字符的位置相关的知识,希望对你有一定的参考价值。

不考虑串中多次出现该字符的问题。就假定该串中只出现了一次我们要查找位置的字符,我要得到的是该字符在串中的位置,String、StringBuffer两个类分别都有什么方法? 我只是记不清了,请大家帮忙一下
三楼的恶心,我是来问问题的又不是需求意见的,你怎么就断定我想做程序员?真晕,以后不要什么都不清楚就在那乱吠

String,一但声明了就不能变了!而StringBuffer是可变的,String声明的空间是个池里,而StringBuffer只能在堆里声明。
int indexOf(int ch)
返回指定字符在此字符串中第一次出现处的索引。
int indexOf(int ch, int fromIndex)
返回在此字符串中第一次出现指定字符处的索引,从指定的索引开始搜索。
int indexOf(String str)
返回指定子字符串在此字符串中第一次出现处的索引。
int indexOf(String str, int fromIndex)
返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始。
参考技术A int indexOf(int ch)
返回指定字符在此字符串中第一次出现处的索引。
int indexOf(int ch, int fromIndex)
返回在此字符串中第一次出现指定字符处的索引,从指定的索引开始搜索。
int indexOf(String str)
返回指定子字符串在此字符串中第一次出现处的索引。
int indexOf(String str, int fromIndex)
返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始。
参考技术B String str = "123";
int i = str.IndexOf('1'); // 返回第一个匹配字符的位置

StringBuffer一样的。本回答被提问者采纳
参考技术C 给你一个测试类:

public class TestString

/**
* @param args
* @author 韩卫召
*/
public static void main(String[] args)
//string测试
String str = "hanweizhai";
if(str.indexOf("h")!=-1)
//如果包含h
System.out.println("String Test>>>>>>>>>>>>>>"+(str.indexOf("h")+1));

//stringBuffer测试
StringBuffer sb=new StringBuffer();
sb.append("hanweizhao");
if(sb.indexOf("a")!=-1)
//如果包含a
System.out.println("StringBuffer Test>>>>>>>>>>"+(str.indexOf("a")+1));



参考技术D String s="abcdefghi";
String s1="fgh";
int index= s.indexOf(s1);

Java替换字符串特定位置的字符? [复制]

【中文标题】Java替换字符串特定位置的字符? [复制]【英文标题】:Java Replace Character At Specific Position Of String? [duplicate] 【发布时间】:2012-07-20 07:04:39 【问题描述】:

我正在尝试替换字符串特定位置的字符。

例如:

String str = "hi";

将字符串位置 #2 (i) 替换为另一个字母“k”

我该怎么做? 谢谢!

【问题讨论】:

【参考方案1】:

如果你需要重用一个字符串,那么使用StringBuffer

String str = "hi";
StringBuffer sb = new StringBuffer(str);
while (...) 
    sb.setCharAt(1, 'k');

编辑:

请注意,StringBuffer 是线程安全的,而使用 StringBuilder 更快,但不是线程安全的。

【讨论】:

【参考方案2】:

使用StringBuilder:

StringBuilder sb = new StringBuilder(str);
sb.setCharAt(i - 1, 'k');
str = sb.toString();

【讨论】:

【参考方案3】:

替换指定位置的字符:

public static String replaceCharAt(String s, int pos, char c) 
   return s.substring(0,pos) + c + s.substring(pos+1);

【讨论】:

帮我从一个位置替换了几个字符。【参考方案4】:

凯!首先,在处理字符串时,您必须参考它们在 0 基本约定中的位置。这意味着如果您有这样的字符串:

String str = "hi";
//str length is equal 2 but the character
//'h' is in the position 0 and character 'i' is in the postion 1

考虑到这一点,解决这个问题的最好方法是创建一个方法来替换字符串中给定位置的字符,如下所示:

方法:

public String changeCharInPosition(int position, char ch, String str)
    char[] charArray = str.toCharArray();
    charArray[position] = ch;
    return new String(charArray);

那么你应该这样调用方法'changeCharInPosition':

String str = "hi";
str = changeCharInPosition(1, 'k', str);
System.out.print(str); //this will return "hk"

如果您有任何问题,请不要犹豫,发布一些内容!

【讨论】:

这个可以让你用空替换字符(清空/删除它)吗? 什么都没有是什么意思?一个空字符串还是一串空格? 我不知道我在想什么。显然空字符串"" 可以用作ch 的参数。 是的,就是这样! @trusktr【参考方案5】:

Petar Ivanov对replace a character at a specific index in a string question的回答

字符串在 Java 中是不可变的。您无法更改它们。

您需要创建一个替换字符的新字符串。

String myName = "domanokz";
String newName = myName.substring(0,4)+'x'+myName.substring(5);

或者您可以使用 StringBuilder:

StringBuilder myName = new StringBuilder("domanokz");
myName.setCharAt(4, 'x');

System.out.println(myName);

【讨论】:

以上是关于JAVA字符串中取特定字符的位置的主要内容,如果未能解决你的问题,请参考以下文章

Java - 如何获取字符串中特定字符的所有出现并将它们转移到非预定义位置?

Java语言中,怎么样查找一个特定的字符串,并返回它的索引位置

怎样在matlab中取某字符串的第五到八位的字符?

Java字符串到Char数组

java截取一个字符串正数或倒数某个特定字符前后的内容

Java实现简易的文本编辑器