2016-04-16 113 views
1

我發現很難將字符串長度作爲「*」符號返回。方法noDisclosure在Interface中,TopClearance是Clearance的子類。另外,gettermethod getSecret()在superClass - > Clearance中,所以我已經繼承了它。簡單java,字符串長度

我知道,返回一個字符串使用Str.length(),但我只是不知道如何把長度並將它轉換成「*」

這是問題的一部分。

TopClearance中的方法noDisclosure只要Clearance中的祕密就會返回一個符號「*」的序列。 因此,如果例如Top是TopClearance的實例的名稱並且top.getSecret()是「魔術」,則 top.noDisclosure()將返回「*****」,因爲「magic」的長度爲5. The TopClearance中的方法護照將返回Clearance中名稱的前兩個字符。 因此,如果例如top是TopClearance實例的名稱並且top.getName()是「Mark」,那麼top.passport()將返回「Ma」。

回答

0

您可以在for循環noDisclosure掩蓋字:

String maskedWord = ""; 
for(int i = 0; i < word.length(); i++) { 
    maskedWord += "*"; 
} 

對於passport,您可以使用substring方法來獲得一塊名稱:

String shortenedName = name.substring(0, 2); 
+0

它完成了工作(也許是最合乎邏輯的),但你不想這樣做。另外如果你這樣做,那麼至少使用StringBuilder而不是String concat。 –

+0

我不知道他們如何深入瞭解字符串,所以我想我會提供一個更簡單的解決方案,並讓其他人也提供其他想法。 – Logan

+0

我在編程方面並不是很先進,所以我認爲這種方法是合乎邏輯的。謝啦! – eggfriedrice

-1

您可以創建使用已知字長的新字符串:

String maskedWord = new String(new char[word.length()]).replace("\0", "*"); 
4

Yo你可以使用String.replaceAll()方法,該方法使用正則表達式。代表任何字符:

text.replaceAll(".", "*");